CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

JDBC的奇怪问题

楼主xdict(xdict)2006-07-01 17:33:46 在 Java / J2SE / 基础类 提问

今天试了JDBC的数据查询和插入,发现奇怪问题,请各路高手帮忙解决。  
  1)先查询,再插入  
  查询成功,插入失败  
  ResultSet   rs   =   stmtNew.executeQuery("select   *   from   student");  
  while   (rs.next())   {  
  int   mystr1   =   rs.getInt("number");  
  String   mystr2   =   rs.getString("name");  
  }  
   
  String   sqlStr   =  
  "insert   into   student   values(998,'helloworld')";  
  if(!stmtNew.execute(sqlStr))  
  System.out.println("error");  
  2)先插入,再查询  
  插入成功,且查询成功  
  String   sqlStr   =  
  "insert   into   student   values(998,'helloworld')";  
  if(!stmtNew.execute(sqlStr))  
  System.out.println("error");  
   
  ResultSet   rs   =   stmtNew.executeQuery("select   *   from   student");  
  while   (rs.next())   {  
  int   mystr1   =   rs.getInt("number");  
  String   mystr2   =   rs.getString("name"); 问题点数:20、回复次数:5Top

1 楼wawyf()回复于 2006-07-01 19:26:19 得分 0

楼主可以试下,对于SQL的检索操作,使用Statement的executeQuery()方法,对于更新操作,使用executeUpdate()方法.Top

2 楼xdict(xdict)回复于 2006-07-02 10:34:07 得分 0

试过了,还是不行,还请高手赐教.Top

3 楼shuaishuaiyu()回复于 2006-07-02 10:49:29 得分 0

先关闭数据源   在连接吧~Top

4 楼lbfhappy(千里冰封)回复于 2006-07-02 11:01:00 得分 0

如果你的语句没有问题的话,那是不可能的,怎么会执行不了那个语句呢  
  你最好还是查询的时候用executeQuery(),然后插入的时候用executeUpdate()Top

5 楼coolboy_1013()回复于 2006-07-02 11:04:10 得分 0

我送你个常用的Java   JDBC   ConnectBean,以下是源代码,你可以建立一个ConnectBean.java文件,把你常用的数据库操作封装到一个Java类中,尽量少在各个类中直接调用标准库。至于你说的问题,插入数据的操作应该用stmtNew.excuteUpdate(sql)这个方法,对每个执行完的操作应该在finally块中关闭数据库连接。  
  再就是请检查一下开发环境或数据库的配置有没有问题  
   
  /*数据库连接模块*/  
  import   java.sql.Connection;  
  import   java.sql.DriverManager;  
  import   java.sql.PreparedStatement;  
  import   java.sql.ResultSet;  
  import   java.sql.SQLException;  
  import   java.util.Properties;  
  import   javax.swing.JOptionPane;  
  import   com.mysql.jdbc.Driver;  
   
   
  public   class   ConnectBean   {  
   
          private   Connection   dbConnect   =   null;  
          private   ResultSet   result   =   null;  
          private   PreparedStatement   ps   =   null;   //   数据库批处理执行对象  
          private   String   driver   =   "com.mysql.jdbc.Driver";  
          private   String   url   =  
                          "jdbc:mysql://localhost/error?useUnicode=true&characterEncoding=gb2312";  
          private   String   user   =   "root";  
          private   static   String   password   =   null;  
   
          public   ConnectBean()   {  
                  //   System.out.println("创建ConnectionBean成功");  
          }  
   
          public   boolean   openConnection()   {  
                  //   打开数据库连接  
                  //   System.out.println("Open   Connection...");  
                  if   (password==null)   {  
                          password=JOptionPane.showInputDialog(null,"请输入MySQL数据库的登录密码:");  
                  }  
                  try   {  
                          DriverManager.registerDriver(new   Driver());  
   
                  }   catch   (SQLException   e)   {  
                    System.out.println("打开数据库连接错误:"   +   e.getMessage());  
                            return   false;  
  }  
                  try   {  
                          if   (dbConnect   ==   null)  
                                  this.dbConnect   =   DriverManager.getConnection(this.url,  
                                                  this.user,   this.password);  
                          //   System.out.println("连接数据库成功");  
                  }   catch   (SQLException   e2)   {  
                          System.out.println("Open   Connection_SQLException:"   +   e2.getMessage());  
                          password=JOptionPane.showInputDialog(null,"数据库密码不正确,请重新输入MySQL数据库的登录密码:");  
                          return   false;  
                  }  
                  return   true;  
          }  
   
          public   Connection   getConnection()   {  
                  return   dbConnect;  
          }  
   
          public   void   setConnection(Connection   conn)   {  
                  this.dbConnect   =   conn;  
          }  
   
          public   void   setAutoCommit(boolean   bl)   {  
                  //   设置对数据库的操作是否自动提交  
                  try   {  
                          dbConnect.setAutoCommit(bl);  
                  }   catch   (SQLException   ex)   {  
                          System.out.println("设置自动提交失败,原因:"   +   ex.getMessage());  
                  }  
          }  
   
          public   void   commit()   {  
                  //   对JDBC事务进行提交  
                  try   {  
                          dbConnect.commit();  
                  }   catch   (SQLException   ex)   {  
                          System.out.println("数据库提交操作失败,原因:"   +   ex.getMessage());  
                  }  
          }  
   
          public   PreparedStatement   createPreparedStatement(String   sqlString,  
                          boolean   isScrollAndUpdateTable)   throws   SQLException   {  
                  //   建立数据库Statement对象  
                  if   (isScrollAndUpdateTable)   {  
                          //   建立可修改数据的滚动集Statement  
                          ps   =   dbConnect.prepareStatement(sqlString,  
                                                                                          ResultSet.TYPE_SCROLL_SENSITIVE,  
                                                                                          ResultSet.CONCUR_UPDATABLE);  
                  }   else   {  
                          //   如果只读取数据  
                          ps   =   dbConnect.prepareStatement(sqlString);  
                  }  
                  return   ps;  
          }  
   
          public   PreparedStatement   createPreparedStatement(String   sqlString)   throws  
                          SQLException   {  
                  ps   =   dbConnect.prepareStatement(sqlString);  
                  return   ps;  
          }  
   
          public   ResultSet   executeQuery()   throws   SQLException   {  
                  //   执行批处理sql语句  
                  this.result   =   ps.executeQuery();  
                  return   result;  
          }  
   
          public   int   executeUpdate()   throws   SQLException   {  
                  return   ps.executeUpdate();   //   返回被sql语句影响的行数  
          }  
   
          public   boolean   next()   throws   SQLException   {  
                  return   result   !=   null   ?   result.next()   :   false;   //   好!  
          }  
   
          //   下面这些set和get方法用的很好,既避免了直接使用ResultSet,又可以灵活设置数据  
          //   获取数据库中的信息  
          public   String   getStringData(int   index)   throws   SQLException   {  
                  //   获取结果集中的字符串内容  
                  return   result.getString(index);  
          }  
   
          public   int   getIntData(int   index)   throws   SQLException   {  
                  //   获取结果集中的整型内容  
                  return   result.getInt(index);  
          }  
   
          public   float   getData(int   index)   throws   SQLException   {  
                  //   获取结果集中的浮点型内容  
                  return   result.getFloat(index);  
          }  
   
          //   设置要对数据库执行的信息  
          public   void   setStringData(int   index,   String   data)   throws   SQLException   {  
                  //   设置SQL语句占位符的字符串内容  
                  ps.setString(index,   data);  
          }  
   
          public   void   setIntData(int   index,   int   data)   throws   SQLException   {  
                  //   设置SQL语句占位符的整型内容  
                  ps.setInt(index,   data);  
          }  
   
          public   void   setData(int   index,   float   data)   throws   SQLException   {  
                  //   设置SQL语句占位符的浮点型内容  
                  ps.setFloat(index,   data);  
          }  
   
          public   void   resetResult()   throws   SQLException   {  
                  //   将结果集置空  
                  this.result   =   null;  
          }  
   
          public   void   close()   throws   SQLException   {  
                  //   关闭数据库连接,将结果集置空  
                  //   System.out.println("DB   Connection   Close()");  
                  this.dbConnect.close();  
          }  
   
          //   显示JVM回收信息  
          public   void   finalize()   throws   Throwable   {  
                  //   System.out.println("DB   Connection   finalize()   bu   JVM...");  
          }  
   
          public   static   void   main(String[]   args){  
          ConnectBean   testBean=new   ConnectBean();  
          System.out.println("测试数据库连接..");  
          testBean.openConnection();  
          System.out.println("测试成功..");  
          }  
   
  }  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:xdict

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo