[英]Insert value into database using jdbc
我正在将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();
从外观上看,您的语句代码很好。 问题是执行后要初始化uname
和pwd
。
我假设您在上面的某个地方已将这些变量初始化为null
。 因此,在执行该语句时,它必须插入的null
。
根据您提供的信息量,如果显示完整的代码,则我可以相应地更新答案,假设您需要更改此内容:
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 Injection攻击。 始终使用类似于以下内容的参数化查询:
insert into Login values (?,?)
在执行更新之前,需要初始化uname
和pwd
:
uname = userTextBox.getText();
pwd = passTextBox.getText();
statement.executeUpdate("insert into Login " + "values ('"+uname+"','"+pwd+"')");
您需要将订单顺序从
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+"')");
否则, uname
和pwd
将为null(前提是在此代码之前未给它们提供任何值)
更新查询不会返回插入或修改的值。 您可以做的是,不是让数据库自动生成新条目的ID,而是在插入之前自己生成它,然后使用该ID查询数据库。
您应该检查涉及此主题的堆栈溢出文章: 如何在JDBC中获取插入ID?
您只需要先获取值,然后查询即可:)
字符串uname = userTextBox.getText();
字符串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);
}
//before using the variables need to initialize
uname = userTextBox.getText();
pwd = passTextBox.getText();
statement.executeUpdate("insert into Login " + "values ('"+uname+"','"+pwd+"')");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.