java中执行access数据库插入错误!!!急!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中执行access数据库插入错误!!!急!!!相关的知识,希望对你有一定的参考价值。

数据库连接是没问题的,执行查询可以成功的插入语句为

private static final String INSERT_SQL = "INSERT INTO USER(USER_NAME,USER_PWD,"
+ "USER_TYPE,USER_NIC_NAME,SEX,ADD,TEL,E-Mail,USER_ID) VALUES(?,?,?,?,?,?,?,?)";

public void insert(User user) throws Exception
Connection con = DbConnection.getConnection();
PreparedStatement ps = null;
try
ps = con.prepareStatement(INSERT_SQL);
ps.setString(1, user.getUserName());
ps.setString(2, user.getUserPassword());
ps.setShort(3, user.getType());
ps.setString(4, user.getNickname());
ps.setString(5, user.isSex());
ps.setString(6, user.getAddress());
ps.setString(7, user.getPhoneNumber());
ps.setString(8, user.getEmail());

// ps.toString();
// System.out.println();
ps.executeUpdate();

catch (SQLException e)
e.printStackTrace();
System.out.println(e.getSQLState());
throw new DaoException("插入用户失败!");
finally
DBUtil.close(ps, con);



下面是打印的异常信息:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] INSERT INTO 语句的语法错误。
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(Unknown Source)
at com.zj.cpms.daoimpl.UserDaoImpl.insert(UserDaoImpl.java:40)
at com.zj.cpms.daoimpl.UserDaoImpl.main(UserDaoImpl.java:246)

有熟悉access的高手帮帮忙
insert的最后一个参数USER_ID去掉结果是一样的,同样的异常信息

下面的两方法试了.不行!!!!

找到答案了,E-Mail字段可能是ACCESS内置的,改为其它的就好了

USER用``引着试试
private static final String INSERT_SQL = "INSERT INTO `USER`(USER_NAME,USER_PWD,"
+ "USER_TYPE,USER_NIC_NAME,SEX,ADD,TEL,E-Mail,USER_ID) VALUES(?,?,?,?,?,?,?,?)";

如果不行用单引号试试
参考技术A insert里面字段有9个参数,但是后面只有8个“?”
===============================================
INSERT INTO USER改成INSERT INTO [USER]
参考技术B 换一个表名,重新连接一下JDBC-ODBC再试试,,,,

[急急急]mysql不允许插入'(单引号)??

一个asp页,目的是 向目标列插入值

目标列的类型为text

但是如果插入字符串中含有' 也就是单引号

就会报错(原来用asp插入Access数据库的时候一切正常)
ADODB.Connection.1 (0x80004005)
SQLState: 4 Native Error Code: 1064 [TCX][MyODBC]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use

插入其他东西,比如asdfsdfsdaer或者双引号、问好都没问题
只是不能含有单引号

出错原因,个人感觉应该是程序误把单引号当作asp文件中的字符串结束符
如:
strSQL = "Insert Into mdb_movie(mdb_type) Values('"&request.Form("a1")&"')"
如果其中误把a1中的内容的单引号当作了命令符,整个语句就会多余一个单引号。所以肯定会出错

就是不知道要怎么修改,才能使插入单引号不报错

谢谢

参考技术A sql中插入特殊符号时前面应该有个符号(~波浪线)来标注
例如插入~本身就应该表示成~~
你看看不知道是不是有帮助!

以上是关于java中执行access数据库插入错误!!!急!!!的主要内容,如果未能解决你的问题,请参考以下文章

急,access找不到存在的数据表

[急急急]mysql不允许插入'(单引号)??

从 NetBeans 插入 Access 数据库

Microsoft Access 和 Java JDBC-ODBC 错误

尝试插入 Access 数据库时,条件表达式中的数据类型不匹配错误

JSP向ACCESS插入记录的报SQL语法错误