[英]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.