MS access 2013 - java字符串
问题描述:
我正在使用netbeans和MS Access 2013.我写了一个简单的程序来将字符串变量的值存储到数据库中。数据库名称是users.accdb。
表:user1字段:uid类型:(短文本)MS access 2013 - java字符串
String 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();
}
当我把与像在字符串变量名“弗兰克”字母的任何字符串,它不存储在数据库中。
如果我在字符串变量中放置字符串如数字“123”,它将完全没有任何错误地存储。
如果我简单地在查询中提到一个字符串,它将被存储。
当事情没有存储在数据库中,我得到这个:[微软] [ODBC Microsoft Access驱动程序]语法错误(缺少操作员)在查询表达式“坦率”
有任何人都面临着类似的东西这个..?
答
您在插入语句中缺少引号。因此,而不是
insert into user1(uid) values("+name+")"
使用
insert into user1(uid) values(\'"+name+"\')"
您查询是容易受到SQL注入。如果你想避免这种情况并摆脱上面缺少的引号,你应该使用PreparedStatement。
当我把报价放在你说的时候,一切都很好。这是一种新的语法吗? ..我使用的语法似乎与MS Access 2010和07一起工作。请解释。 – 2015-02-08 02:39:23
没有它没有。你需要引用字符字段。 – SMA 2015-02-08 10:32:26