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

删除sql数据库中的表的问题


import java.sql.*; //导入java.sql包
public class Conn { //创建类Conn
Connection con;
Statement stmt;

public Connection getConnection(){ //建立返回值为Connection的方法
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
System.out.println("数据库驱动加载成功");
} catch (ClassNotFoundException e) {
 e.printStackTrace();
}
try {
con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;" +
"DatabaseName=学生库","sa","12345");
System.out.println("数据库连接成功");
stmt=con.createStatement();
stmt.executeQuery("drop table 销售表");
System.out.println("删除成功");
stmt.close();
} catch (SQLException e) {
e.printStackTrace();

return con; //按方法要求返回个Connection对象
}
public static void main(String[] args) { //主方法
Conn c = new Conn(); //创建本类对象
c.getConnection(); //调用连接数据库方法
}
}

第18行运行结束后,表删除成功了,可是出现异常,System.out.println("删除成功");这句不运行
提示如下:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]No ResultSet set was produced.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeQuery(Unknown Source)
at ceshi.Conn.getConnection(Conn.java:20)
at ceshi.Conn.main(Conn.java:42)
sql drop语句

------解决方案--------------------
stmt.executeQuery("drop table 销售表");

执行删除操作 还用executeQuery啊,不是有executeUpdate和execute吗。。。
------解决方案--------------------
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]No ResultSet set was produced.
很明显的告诉你了没有返回值,照楼上的改成executeUpdate应该就没问题了
------解决方案--------------------
executeQuery一般用于查询操作,楼主记住了
------解决方案--------------------
executeQuery一般用于查询操作,executeUpadate用于更新,删除,修改操作,而且我们应该使用preparedStatement,这样可以防止Sql注入,提高代码的性能,以及提高代码的可读性
------解决方案--------------------
就按照楼上提到的做,如果表明为中文的话,在项目中很容易出错,各种乱码问题会困扰你,以后一定要注意,尽量避免用中文定义数据库的表明和字段,还有在项目中不能使用中文定义类的名字等。