java 连接数据库错误 高手帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/24 17:36:33
import java.sql.*;
public class database {

public static void main(String[] args) throws ClassNotFoundException, SQLException {

String DBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
String connectionStr="jdbc:odbc:shangfengye";
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
Class.forName(DBDriver);
try{
Class.forName(DBDriver);

}
catch(ClassNotFoundException e)
{
System.out.println(e.getMessage());
}
try {
con=DriverManager.getConnection(connectionStr);
} catch (SQLException e) {

e.printStackTrace();
}

try {
stmt=con.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace

Exception in thread "main" java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'user_info' 中为标识列指定显式值

意思就是你在数据库中user_info表里有个自动增长列,它默认是有数据库自动产生值的,这个时侯你在这条插入语句中却给了这个自动增长列一个值,可能就是那个1,
stmt.executeUpdate("INSERT INTO user_info VALUES(1,'林时','111','男','2880351')");
改改这条插入语句就好了.

楼主用的肯定是MSSQL。
问题解决有如下两种方法:
1.INSERT INTO user_info VALUES('林时','111','男','2880351');
让数据库自动帮你完成标识列的赋值

2.将SQL语句拼成如下形式

SET IDENTITY_INSERT user_info ON
INSERT INTO user_info VALUES(1,'林时','111','男','2880351')
SET IDENTITY_INSERT user_info OFF

**2点注意
**1.切忌操作玩INSERT后要 SET IDENTITY OFF,没释放前 不能对其他表SET ON。
**2.人为添加 标识列 注意不要重复,不然还是报错。因为它是唯一的。

INSERT INTO user_info VALUES(1,'林时','111','男','2880351');