MS access 2013 - java String



我使用的是netbeans和MS Access 2013。我编写了一个简单的程序,将String变量的值存储到数据库中。数据库名称为users.accdb。
表:user1字段:uid类型:(短文本)

字符串name=";尝试{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:odbc:Driver=
{Microsoft Access Driver (*.mdb, *.accdb)};
Dbq=F:\users.accdb");
Statement stmt = conn.createStatement();
stmt.execute("insert into user1(uid) values("+name+")");
conn.close(); stmt.close();
}catch(SQLException se){
                       se.printStackTrace();
                       }
  1. 当我在字符串变量名中放置任何字母为"frank"的字符串时,它不会存储在数据库中。

  2. 如果我将数字为"123"的字符串放在字符串变量中,它将被准确地存储,没有任何错误。

  3. 如果我只是在"内的查询中提到一个字符串。。它被存储。

当某些内容没有存储在数据库中时,我会得到以下信息:[Microsoft][ODBC Microsoft Access Driver]查询表达式"frank"中的语法错误(缺少运算符)

有人面对过这样的事情吗。。?

插入语句中缺少引号。所以不是

insert into user1(uid) values("+name+")"

使用

insert into user1(uid) values('"+name+"')"

您的查询容易受到SQL注入的攻击。如果您想避免这种情况并消除上面缺少的引号,您应该使用PreparedStatement。

最新更新