为啥我插不进去?

pangfeng134300 2007-04-23 08:51:34
public void AddShujuku(){
Connection con;
Statement sql;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){
System.out.println(""+e);
}
try{
String strSQL;
strSQL="insert into 用户管理 (用户名,密码) values('";
strSQL=strSQL+text1.getText().trim()+"','";
strSQL=strSQL+text2.getText().trim()+"')";

con=DriverManager.getConnection("jdbc:odbc:图书管理系统","","");
sql=con.createStatement();
sql.executeUpdate(strSQL);
JOptionPane.showMessageDialog(null,"添加成功!");
con.close();

}
catch(SQLException e1){}
}

想往数据i库里插入数据,可为啥插不进去呢?
...全文
377 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
brooksychen 2007-04-23
  • 打赏
  • 举报
回复
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]无法将 NULL 值插入列 '标识',表 '图书管理系统.dbo.用户管理';该列不允许空值。INSERT 失败。

这就是最关键的信息,是说你插入的表中有某列不允许为空值,但在插入的记录里又没给该列赋值。

比如用户管理表有“用户名”、“密码”、“真实姓名”……等列,其实“真实姓名”列不允许为空,而你在插入记录的时候只插入用户名和密码(你的语句写的是只插入这两列),这样插入的时候肯定会出错。

也有可能是你获得的用户名、密码其中之一为null。你在插入前输出sql语句看看,即把
System.out.println(strSQL);
这句话加在
con=DriverManager.getConnection("jdbc:odbc:图书管理系统","","");
的前面,看输出是什么?
pangfeng134300 2007-04-23
  • 打赏
  • 举报
回复
我明白啦!啊~~我真SB呀……不好意思,给各位添麻烦了
伟大的左前卫 2007-04-23
  • 打赏
  • 举报
回复
晕,表是你自己建的不?你的表里有个列叫‘标识’,它被设为不可空,你插入一条记录的时候,也得给他一个值。
pangfeng134300 2007-04-23
  • 打赏
  • 举报
回复
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]无法将 NULL 值插入列 '标识',表 '图书管理系统.dbo.用户管理';该列不允许空值。INSERT 失败。
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 bookmanagersystem.UserAdd.AddShujuku(UserAdd.java:147)
at bookmanagersystem.UserAdd$1.mouseClicked(UserAdd.java:114)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:212)
at java.awt.Component.processMouseEvent(Component.java:5491)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3901)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1774)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

这些是异常,我一点都看不懂啊~~说了个啥?
伟大的左前卫 2007-04-23
  • 打赏
  • 举报
回复
哈哈,这个标题起的贴切!catch(SQLException e1){ e1.printStackTrace();}看看抛的什么异常,否则神仙也说不出来啊。另外对三楼的说法表示不解,楼主列的本来就是一个方法。
brooksychen 2007-04-23
  • 打赏
  • 举报
回复
有没有什么异常信息输出?或者你单步执行程序,看看在哪一步出现问题。
pangfeng134300 2007-04-23
  • 打赏
  • 举报
回复
楼上两位的方法我都试过了,可是没什么作用,在这发个新贴就是想吸引更多人的注意,插不进去的感觉真不爽啊!怎么办,继续在线等……
crashguard 2007-04-23
  • 打赏
  • 举报
回复
try语句必须写到方法中或者static块当中。
你把两个try块外面套上一个static{}试试看
brooksychen 2007-04-23
  • 打赏
  • 举报
回复
添加不成功的话,控制台有什么输出?
代码最后的catch(SQLException e1)部分最后写上一些代码,这样你可以获得异常的一些信息,对程序的调试也有帮助。

你在前面的帖子http://community.csdn.net/Expert/topic/5486/5486683.xml?temp=.5896112不是在问吗?为何又新开一贴?呵呵

BTW,你这帖子的名字有点……

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧