日期:2014-05-20  浏览次数:20819 次

sql与java连接问题读数据,请高手看看怎么了。谢谢!
[Microsoft][ODBC SQL Server Driver][SQL Server]违反了 PRIMARY KEY 约束 'PK_infor
mation'。不能在对象 'information' 中插入重复键。
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]违反了 PRI
MARY KEY 约束 'PK_information'。不能在对象 'information' 中插入重复键。
  at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
  at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
  at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
  at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
  at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:
288)
  at LL.main(LL.java:13)
请按任意键继续. . .



import java.sql.*;
public class LL{
public static void main(String []agrs)
{
String url="jdbc:odbc:student";
String id,name,password;
int age,money;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection(url,"sa","19861105");
Statement stat=conn.createStatement();
stat.executeUpdate("Insert into information (Id,Name,Age,Password,Money)values('1234','jiangchao',23,'1234546',9999)");
ResultSet sr=stat.executeQuery("select*from information");
while(sr.next())
{
id=sr.getString("ID");
name=sr.getString("Name");
age=sr.getInt("Age");
password=sr.getString("Password");
money=sr.getInt("Money");
System.out.println(id+" "+name+""+age+""+password+""+money);
}
conn.close();
}
catch(Exception ex){
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
}

------解决方案--------------------
呵呵,你information表的primary key是id吧!你是将main方法执行了两次吧!你不妨将1234改成其它的试试!
------解决方案--------------------
违反了数据库的主键约束,建议把ID改为自动增长,写个触发器都可以解决
------解决方案--------------------
Insert into information (Id,Name,Age,Password,Money)
插入时主键值重复了,换个Id呗
------解决方案--------------------