0

我正在使用 MS-Access 和 Java 连接 JDBC-ODBC 驱动程序。正如下面的代码,我正在尝试创建一个注册文本框,但是当我添加值时,我只会在数据库中得到结果“null”。我如何获得我插入的真正价值?谢谢

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    Connection con = DriverManager.getConnection("jdbc:odbc:ADB");

    Statement statement = con.createStatement();

    statement.executeUpdate("insert into Login " + "values  ('"+uname+"','"+pwd+"')"); 

    uname = userTextBox.getText();
    pwd = passTextBox.getText();
4

7 回答 7

3

从外观上看,您的语句代码很好。问题是您正在初始化unamepwd在执行它之后。

我假设您在上面的某个地方已将这些变量初始化为null. 因此,在执行语句时,它必须插入的值是null.

于 2013-04-18T18:00:32.347 回答
1

根据您提供的信息量,如果您显示完整的代码,我可以相应地更新我的答案,我假设您需要更改:

statement.executeUpdate("insert into Login " + "values  ('"+uname+"','"+pwd+"')"); 

uname = userTextBox.getText();
pwd = passTextBox.getText();

至:

uname = userTextBox.getText();
pwd = passTextBox.getText();

statement.executeUpdate("insert into Login " + "values  ('"+uname+"','"+pwd+"'")"); 

此外,您的查询容易受到 SQL 注入攻击。始终使用类似于以下的参数化查询:

insert into Login values (?,?)
于 2013-04-18T18:01:23.313 回答
0

更新查询不返回插入或修改的值。您可以做的不是让数据库自动生成新条目的 ID,而是在插入之前自己生成,然后使用该 ID 查询数据库。

您应该查看涵盖此主题的堆栈溢出帖子: 如何在 JDBC 中获取插入 ID?

于 2013-04-18T18:04:42.993 回答
0
//before using the variables need to initialize 

uname = userTextBox.getText();
pwd = passTextBox.getText();

statement.executeUpdate("insert into Login " + "values  ('"+uname+"','"+pwd+"')"); 
于 2013-04-18T19:06:31.217 回答
0

您需要 在执行更新之前进行uname初始化:pwd

uname = userTextBox.getText();
pwd = passTextBox.getText();
statement.executeUpdate("insert into Login " + "values  ('"+uname+"','"+pwd+"')"); 
于 2013-04-18T18:01:01.700 回答
0

您需要从

statement.executeUpdate("insert into Login " + "values  ('"+uname+"','"+pwd+"')"); 
uname = userTextBox.getText();
pwd = passTextBox.getText();

uname = userTextBox.getText();
pwd = passTextBox.getText();
statement.executeUpdate("insert into Login " + "values  ('"+uname+"','"+pwd+"')"); 

否则将为unamepwd(前提是在此代码之前没有给它们任何值)

于 2013-04-18T18:01:17.380 回答
0

您只需要先获取值然后输入查询:)

字符串 uname = userTextBox.getText();
String pwd = passTextBox.getText();

try          
    {     

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");    

    Connection con = DriverManager.getConnection("jdbc:odbc:ADB");    

    Statement statement = con.createStatement();     

    statement.executeUpdate("insert into Login " + "values  ('"+uname+"','"+pwd+"')");     
     }
   catch(Exception e)        
    {      
       System.out.println(e);      
    }    
于 2013-04-18T18:26:08.583 回答