MS 访问 2013 - java 字符串

MS access 2013 - java String

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

字符串名称=" "; 试试{

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.