我使用的是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();
}
当我在字符串变量名中放置任何字母为"frank"的字符串时,它不会存储在数据库中。
如果我将数字为"123"的字符串放在字符串变量中,它将被准确地存储,没有任何错误。
如果我只是在"内的查询中提到一个字符串。。它被存储。
当某些内容没有存储在数据库中时,我会得到以下信息:[Microsoft][ODBC Microsoft Access Driver]查询表达式"frank"中的语法错误(缺少运算符)
有人面对过这样的事情吗。。?
插入语句中缺少引号。所以不是
insert into user1(uid) values("+name+")"
使用
insert into user1(uid) values('"+name+"')"
您的查询容易受到SQL注入的攻击。如果您想避免这种情况并消除上面缺少的引号,您应该使用PreparedStatement。