在更新SQLServer 2000数据库的时候, 遇到一些奇怪的问题,请教一下各位大侠!!数据库中有一表member_basic, 已经有了若干个数据.member_basic的关系模式为
member_basic(id: char(10), nick_name: varchar(50), sex: char(4), password: varchar(20), sex: smallint, register_date: datetime)
已经连接了成功数据库.
String query ="select count(*) from member_basic";
java.sql.ResultSet rs = stm.executeQuery(query);
rs.next();
int count = rs.getInt(1);
rs.close();
//以上语句执行时没什么问题, count的结果成功返回
String id = String.valueOf(count+1000);
String update = "insert into member_basic values(?, ?, ?, ?, ?, ?)";
try {
java.sql.PreparedStatement prpStm = cnn.prepareStatement(update);
prpStm.setString(1, id);
prpStm.setString(2, nickNameTextField.getText());
prpStm.setString(3, maleRadioButton.isSelected()?"男":"女");
prpStm.setString(4, String.valueOf(passwordPasswordField.getPassword()));
prpStm.setInt(5, Integer.parseInt(ageTextField.getText()));
prpStm.setDate(6, new java.sql.Date(new java.util.Date().getTime()));
prpStm.executeUpdate();//然而该语句却引发SQLException
.....
...prpStm.executeUpdate()这句提示异常为
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'member_basic' 无效。为何我在上面第一次可以成功使用member_basic,而到了这儿却变成了无效了呢?
如何解决这个问题, 先谢谢了.
member_basic(id: char(10), nick_name: varchar(50), sex: char(4), password: varchar(20), sex: smallint, register_date: datetime)
已经连接了成功数据库.
String query ="select count(*) from member_basic";
java.sql.ResultSet rs = stm.executeQuery(query);
rs.next();
int count = rs.getInt(1);
rs.close();
//以上语句执行时没什么问题, count的结果成功返回
String id = String.valueOf(count+1000);
String update = "insert into member_basic values(?, ?, ?, ?, ?, ?)";
try {
java.sql.PreparedStatement prpStm = cnn.prepareStatement(update);
prpStm.setString(1, id);
prpStm.setString(2, nickNameTextField.getText());
prpStm.setString(3, maleRadioButton.isSelected()?"男":"女");
prpStm.setString(4, String.valueOf(passwordPasswordField.getPassword()));
prpStm.setInt(5, Integer.parseInt(ageTextField.getText()));
prpStm.setDate(6, new java.sql.Date(new java.util.Date().getTime()));
prpStm.executeUpdate();//然而该语句却引发SQLException
.....
...prpStm.executeUpdate()这句提示异常为
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'member_basic' 无效。为何我在上面第一次可以成功使用member_basic,而到了这儿却变成了无效了呢?
如何解决这个问题, 先谢谢了.
sa用户为系统用户,它虽然能够登陆数据库,但是数据库里边的权限都是dbo的.
你select可以,不设计到数据的更改,但是你要insert into数据的话,那你就是设计到数据的改变了.嘿嘿
解决方法是你新建一个数据库,然后再重新分配下权限就OK啊!
我刚才在我oracle服务器下实验了下! 还有我认为你这样写prpStm.setString(1, id);
prpStm.setString(2, nickNameTextField.getText());
prpStm.setString(3, maleRadioButton.isSelected()?"男":"女");
prpStm.setString(4, String.valueOf(passwordPasswordField.getPassword()));
prpStm.setInt(5, Integer.parseInt(ageTextField.getText()));
prpStm.setDate(6, new java.sql.Date(new java.util.Date().getTime()));
prpStm.executeUpdate();//然而该语句却引发SQLException
如果只是简单的插入数据的话,不是一种最好的方式!把GUI也设置进来显得可读性不是很好!个人之见而已!嘿嘿
原本不是用sa用户,引发异常,后来用了sa用户,引发同样的异常。 所以这应该不是权限的问题。
to 1 楼:
完整异常:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'member_basic' 无效。
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.postImplExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeUpdateInternal(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.executeUpdate(Unknown Source)
at cn.edu.gdut.HeidongLGC.RegisterJDialog.updateDatabase(RegisterJDialog.java:81)
at cn.edu.gdut.HeidongLGC.RegisterJDialog.registerButtonActionPerformed(RegisterJDialog.java:679)
at cn.edu.gdut.HeidongLGC.RegisterJDialog.access$600(RegisterJDialog.java:16)
at cn.edu.gdut.HeidongLGC.RegisterJDialog$4.actionPerformed(RegisterJDialog.java:527)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:177)
at java.awt.Dialog$1.run(Dialog.java:1039)
at java.awt.Dialog$3.run(Dialog.java:1091)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1089)
at java.awt.Component.show(Component.java:1419)
at java.awt.Component.setVisible(Component.java:1372)
at java.awt.Window.setVisible(Window.java:801)
at java.awt.Dialog.setVisible(Dialog.java:979)
at cn.edu.gdut.HeidongLGC.RegisterJDialog$6.run(RegisterJDialog.java:764)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)谢谢各位!
另外,我用的是IDE为netBeans 6.0.1, JDK 1.6
java.sql.Statement 与java.sql.prepareStatement不可共存么?
http://www.java2000.net/download.jsp
另外,需要修改你的URL参数,请参考另一个资料
http://www.java2000.net/viewthread.jsp?tid=367