连接access数据库报错说insert的语句有错,请帮忙看一下

来源:百度知道 编辑:互助问答吧 时间:2020/11/30 00:58:07
我的是java语句连接access数据库,我的数据都是文本型我是初学 ,对着书查了好几天也看不出来
public void jButton2_actionPerformed(ActionEvent e) throws SQLException {
String DBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
String connectionStr="jdbc:odbc:db1";
Connection con = null;
Statement stmt = null;
String i=null;
try {Class.forName(DBDriver);
con = DriverManager.getConnection(connectionStr, "", "");
stmt = con.createStatement();
String n = jTextField2.getText();
// String sex = (String) jComboBox1.getSelectedItem();
String id= jTextField3.getText();
String d = jTextField1.getText();
// String type = jTextField5.getText();
i = "insert into inf(name,id,date) values('" + n + "','" + id + "','" + d + "')";
stmt.executeUpdate(i);
stmt.close();
con.close();
} catch (Exception ex1) {}

JOptionPane.showMessageDialog(null, "信息输入成功!", "用户提示",
JOptionPane.INFORMATION_MESSAGE);
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
//jTextField4.setText("");
}
我怕不好写入数据库,所以目前的数据都是文本型,我只设了一个主键。出的错误如下
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] INSERT INTO 语句的语法错误。
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)
at sheji.Frame1.jButton2_actionPerformed(Frame1.java:198)
at sheji.Frame1_jButton2_actionAdapter.actionPerformed(Frame1.java:223)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)

你的SQL语句拼接没有问题。应该是出在数据库设计上:
1.看主键是否重复
2.数据类型是否正确,你插入的3个值都是字符串型
3.数据长度是否超出
最好把错误代码发一下。

看看你values('" + n + "','" + id + "','" + d + "')"; 这个三个地方的数据类型传进去的可对!

主键是否重复,插入的列是否允许为空之类的好好看看

i="insert into inf(name,id,date)valuse('"+n+"','"+id+"','"+d+"')";

日期类型 要注意格式问题

sql语句没问题 应该看看数据库 id是否是自增长的 如果是则改为非自增长 想要保留id的自增长 sql语句就写成i="insert into inf(name,date)valuse('"+n+"','"+d+"')"; 最后一点就是数据库里的字段要用文本类型

把放access 数据库文件的文件夹设置为 everyone 可写