Java JDBC 创建临时表,插入数据,然后查询,没有返回结果集

public boolean checkCodeRepeat(List<String> codelist)
{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String now = dateFormat.format(new Date());
String table = "#"+"temp"+now;

String sql = "create table "+table+"(w_code varchar(20)) ";

for (int i = 0; i < codelist.size(); i++) {
sql = sql + "insert into "+table+" values('"+codelist.get(i)+"') ";
}

boolean flag = false;
try {
conn = this.getConnection();
sql = sql + "select count(*) from "+table+" where w_code in (select w_code from info) or w_code in (select m_code from info)";
System.out.println(sql);
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
if(rs.next())
{
int result = rs.getInt(1);
if(result == 0)
{
flag = true;
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
finally
{
this.closeAll(conn, ps, rs);
}
return flag;
}

com.microsoft.sqlserver.jdbc.SQLServerException: 该语句没有返回结果集。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(Unknown Source)
at dao.InfoDao.checkCodeRepeat(InfoDao.java:594)

看下数据库里面有信息不,如果没有,那就是插入时没有commit,数据丢失了
温馨提示:内容为网友见解,仅供参考
无其他回答

insert into的问题
如果是嵌入式SQL,就是通过ODBC或者JDBC写程序那当然就只要在JAVA或者ODBC中动态生成一个字符串就行了.而且你要求的这种功能恐怕未必有:因为插入第一列时或产生100条记录.插入第二列时又会产生100条新记录.所以可能应该用update才是.

Derby文件数据库的基本使用方法
要开始使用Derby,只需从官方网站下载并解压。安装过程简单,包括bin目录下的工具、示例程序、文档和数据库jar文件。内嵌模式下,通过ij工具连接数据库,执行SQL命令创建表、插入数据和查询数据。网络模式下,需要启动网络服务器,通过特定的JDBC URL进行连接。在命令行中,运行ij脚本,通过'connect'命令创建...

JDBC执行存储过程异常慢
首先,你把输入参数放入一个临时表;比如结构是:_id _field 查询的条件 更新的字段 \/\/ 更新_table中存在的记录的_field字段,并且只更新_table与_tmp键值相等的记录 UPDATE _table t SET _field=(SELECT MAX(_field) FROM _tmp WHERE _id=t._id) WHERE EXISTS (SELECT 'X' FROM _tmp WHERE...

使用mybatis查询mysql数据库 先调用存储过程,然后再inner join 存储过 ...
这个错误报文上写的很明确啊。就是在你那个数据库中gettreeobjsV4_result 表根本不存在。所以报的jdbc的错误啊。你使用mysql fount 看一下 select * from gettreeobjsV4_result 有没有问题。

求:用JSP写的图书管理系统的毕业论文
JDBCBean bean 封装所有的数据库操作。包括一个带结果集返回的SQL执行方法和一个不带结果集返回的SQL执行方法。 Rank bean 封装4种权限(普通读者、用户管理员、图书管理员、系统管理员)的页面访问,相当于页面加锁功能。 SetUp bean public static String title="SuperLibrary";\/\/系统名称 public static String dbS...

面试官:MySQL是如何执行一条查询语句的?
比如,它会检查表和列名是否存在,检查名字和别名,保证没有歧义。预处理之后得到一个新的解析树。查询优化器 一条SQL语句是不是只有一种执行方式?或者说数据库最终执行的SQL是不是就是我们发送的SQL? 这个答案是否定的。一条SQL语句是可以有很多种执行方式的,最终返回相同的结果,他们是等价的。但是如果有这么多种...

DB2数据更新问题
然后是判断,不知道你用的是什么语言来实现,这个地方已经跟数据库没有关系了,无法优化。接下来是插入,如果能批量操作,就考虑批量,比如JDBC的接口中addBatch()等方法,同时给B表添加append on特性,可以很大程度的加快插入速度,是优化的关键点。使用append 特性以后,请注意定期reorg table,alter ...

java循环越跑越慢为什么?高手进
可以通过如下方法来优化查询 : 1、把数据、日志、索引放到不同的I\/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I\/O越重要. 2、纵向、横向分割表,减少表的尺寸(sp_spaceuse) 3、升级硬件 4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据...

SQL 语句 select sum(a) from table1 where b=3
或(其中过程返回结果参数): 方括号指示其中的内容是可选的。它们不是语法的必要部分。 输入参数可以为文字或参数。有关详细信息,参见 JDBC 指南中第 7 节,“CallableStatement”。 可通过调用方法 DatabaseMetaData.supportsStoredProcedures 检查数据库是否支持已存储过程。 oj 表示外部连接 外部连接的语法为 ...

开源的数据库有哪些?
ACID。MySQL还支持其他存储引擎,提供了临时表的功能(使用MEMORY存储引擎),通过MyISAM引擎实现了高速读的数据库,此外还有其他的 核心存储引擎与第三方引擎。 MySQL的文档非常丰富,有很多质量不错的免费参考手册、图书与在线文档,还有来自于Oracle和第三方厂商的培训与支持。 MySQL近几年经历了所有权的变更和一些颇具戏剧...

相似回答