import java.sql.*;
public class DB {
public static void main(String [] args)// throws SQLException
{

String driver="com.mysql.jdbc.Driver";
  String url="jdbc:mysql://localhost:3306/exmaple";
  String user="root";
  String password="123";

Connection conn=null;
Statement stat=null;
ResultSet rs=null;

String sql1="INSERT INTO grade(course,s_num,grade)VALUES('english',3,'32')";
String sql2="UPDATA grade SET course='1111' WHERE id=1";
String sql3="SELECT * FROM grade";

try
{
Class.forName(driver);
conn=DriverManager.getConnection(url,user,password);
System.out.println("连接数据库成功");
 stat=conn.createStatement();
 System.out.println("连接数据库成功");
 rs=stat.executeQuery(sql1);
 System.out.println("连接数据库成功");
 while(rs.next())
 {
 int id=rs.getInt("id");
 String course=rs.getString("course");
 int s_num=rs.getInt("s_num");
 String grade=rs.getString("grade");
 System.out.println(id+" "+course+" "+s_num+" "+grade);
 }
 
 int i=stat.executeUpdate(sql2);
 if(i!=0)
 {
 System.out.println("插入数据成功!");
 }
 
 int j=stat.executeUpdate(sql3);
 if(j!=0)
 {
 System.out.println("更新成功");
 }
}
catch(ClassNotFoundException e)
{
System.out.print("没有找到数据库驱动");
}

catch(SQLException e)
{
System.out.print("连接数据库服务器异常");
}
finally
{
if(rs!=null)
{
try
{
rs.close();
rs=null;
}
catch(Exception e)
{
e.printStackTrace();
}
}
if(stat!=null)
{
try
{
stat.close();
stat=null;
}
catch(Exception e)
{
e.printStackTrace();
}
}
if(conn!=null)
{
try
{
conn.close();
conn=null;
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}}运行的结果是:
连接数据库成功
连接数据库成功
连接数据库服务器异常

那即是这条语句出错rs=stat.executeQuery(sql1);请问什么问题呢?sql1语句我在数据库里执行过是可以的

解决方案 »

  1.   

    rs=stat.executeQuery(sql1);
    你用executeQuery去执行insert么?
      

  2.   

    既然有异常,至少也得把异常的具体内容打出来吧,不然怎么诊断:
    rs=stat.executeQuery(sql1); 应该是这步出错。
    在每个捕获的异常处,输出e.getMessage()并
    e.printStackTrace(),打出来就知道是怎么回事了。
      

  3.   

    到底是执行到哪里出错了都不知道。java中的异常捕获要充分利用起来,是有它存在的价值的
      

  4.   

    insert操作不会返回result,要用stat.execute(sql1);