簡體   English   中英

使用jdbc將值插入數據庫

[英]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();

從外觀上看,您的語句代碼很好。 問題是執行后要初始化unamepwd

我假設您在上面的某個地方已將這些變量初始化為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 (?,?)

在執行更新之前,需要初始化unamepwd

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+"')"); 

否則, unamepwd將為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM