【发布时间】:2011-08-22 07:00:41
【问题描述】:
我有以下代码:
# my db connection is here:
# @connection = DriverManager.getConnection("jdbc:hsqldb:file:../db/rdata", "user", "user")
#the method recieves a array of hash {:rev,:time,:path,:result}
def create(list)
st=@connection.createStatement()
sql=""
list.each do |i|
sql.concat("INSERT INTO RESULTS_LOGIN (REVISION, TIMESTAMP, ARCHIVEPATH, RESULTS) VALUES (#{i[:rev]},'#{i[:time]}','#{i[:path]}','#{i[:result]}');\n")
end
p sql.lines.to_a.size
st.execute(sql)
st.close
end
问题:
sql.lines.to_a.size 是 128,这意味着我有 128 行要插入。但是,重新运行多次后,我发现每次我在数据库中得到不同的行。比如这次RESULT_LOGIN表有114行,下一次是99....也有成功运行,使得表有128行。
我不明白为什么会发生这样的事情。没有错误,没有异常,奇怪的是,在我的代码中,在“create”方法之后有一个方法,它执行“select * from RESULTS_LOGIN”并打印出来,如下所示:
create(list) # insert rows
read_all # print all rows
每次在“create”之后的“read_all”打印出 128 行和正确的数据;但是,如果我在关闭并重新创建连接后单独运行 read_all,或者使用 HSQLDB 的 GUI 管理工具浏览 db,则会丢失一些行......
【问题讨论】: