日期:2014-05-18  浏览次数:20643 次

数据插入access问题!郁闷啊。
使用java把数据存入access中,执行后提示:
------------------------------------------
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   com.hy.Access.main(Access.java:34)
------------------------------------------
access表结构如下:
表:tBuyBack
字段:字段名称         类型         主键       可否为空             说明
              序号               Counter     是             否                   此列自动增长
              品名               Text(20)   否             是
------------------------------------------
//java语句如下:
import   java.sql.Connection;
import   java.sql.DriverManager;
import   java.sql.ResultSet;
import   java.sql.SQLException;
import   java.sql.Statement;

public   class   Access   {

/**
  *   @param   args
  */
public   static   void   main(String[]   args)   {
//   TODO   Auto-generated   method   stub
Connection   conn   =   null;
Statement   stmt   =   null;
String   sql   =   "jdbc:odbc:driver={Microsoft   Access   Driver   (*.mdb)};DBQ=E:\\TRANSMIT.MDB ";
try   {
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver ");
conn   =   DriverManager.getConnection(sql,   "sa ",   " ");
stmt   =   conn.createStatement();
}   catch   (Exception   e)   {
System.out.println(e.getMessage());
}
try   {
stmt.executeUpdate( "INSERT     INTO     tBuyBack   (序号,品名)   VALUES( '3 ', '感冒通 ') ");
stmt.close();
conn.close();
}   catch   (SQLException   e)   {
//   TODO   Auto-generated   catch   block
e.printStackTrace();
}
}

}
------------------------------------------------
字段里“品名”是有的,为什么还要提示INSERT   INTO   语句包含下列未知的字段名: '品名 '。
INSERT     INTO     tBuyBack   (序号)   VALUES( '3 ')是好的。
还有就是access里Date/Time类型的格式是什么样的?是2007-02-07?还是2007-02-07   16:30:20?
序号是counter类型的,他是主键,每次插入都要自动加一,怎么使用?最好有使用方法。

------解决方案--------------------
不是品名而是 '品名 '
品名会被当错列名而不是内容
试下
上回我是这样解决的
------解决方案--------------------
你这么插呢?自增长是不用插入的,他把 "3 "插入了 "品名 "里了吧
INSERT INTO tBuyBack (品名) VALUES( '感冒通 ')