strSQL = "create table #t(fkeyid int, rkeyid int)\n"
.concat("insert into #t(fkeyid, rkeyid)\n")
.concat("select distinct fkeyid, rkeyid from sysforeignkeys\n")
.concat("select * from #t drop table #t");
try {
rs = stmt.executeQuery(strSQL);
} catch (Exception e) {
e.printStackTrace();
System.out.println("Error trace in setTBStruct() : " + e.getMessage());
}com.microsoft.sqlserver.jdbc.SQLServerException: 该语句没有返回结果集。新人,请朋友们关照一下

解决方案 »

  1.   

    sql文之间都不带分号的??试试呢
    String strSQL = "create table #t(fkeyid int, rkeyid int);\n"
        .concat("insert into #t(fkeyid, rkeyid)\n")
        .concat("select distinct fkeyid, rkeyid from sysforeignkeys;\n")
        .concat("select * from #t;\ndrop table #t;");
      

  2.   


    是 sql server 2000,谢谢
      

  3.   

    你想在一个SQL里面执行多个SQL? 你到底要做什么哦?解决方案
    1)改写成多个SQL来执行
    2)改写成存储过程。你千万别把客户端,一次粘贴多行的方式,放到程序代码里面,人家客户端是根据分号分割字符串,也是一个一个的发给数据库服务器的。
      

  4.   


    是执行一段sql脚本 sql server 不需要分号分割,例:
    strSQL = "declare @sql varchar(8000) set @sql = 'select * from sysobjects' exec(@sql)"
    执行这个是没有问题的。
      

  5.   

    顶老紫竹的,怎么在一个SQL语句中又创建表,又插入数据的
      

  6.   

    自己来吧:如果这个sqlStatement是动态的,那么它就可能像我描述的一样,executeQuery(sql) 有且只有能有一个ResultSet结果返回,executeBatch(),必须不能有ResultSet返回;复杂的sqlStatement可以用execute来执行,必须调用 getResultSet 或 getUpdateCount 方法获取该结果,必须调用 getMoreResults 获取任何后续结果。