繁体   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