sql未正确设置resultset

sql未正确设置resultset,第1张

SQL Server 导入和导出向导报错

在使用SQL Server 导入和导出向导将Excel表格导入到数据库中的表格里,执行后报错如下

错误 0xc002f210: 准备 SQL 任务 1: 执行查询“TRUNCATE TABLE [dbo].[rs]

”失败,错误如下:“Cannot truncate table ‘dbo.rs’ because it is being referenced by a FOREIGN KEY constraint.”。失败的原因可能有: 查询本身有问题、未正确设置 “ResultSet” 属性、未正确设置参数或未正确建立连接。

经历多次尝试后,发现并不是参数设置不对,数据源类型不同。而是目标表设置了许多外键关系,将这些关系一一删除后,即可导入成功。

导入数据后,又重新将这些关系添加回来。保存的时候又报错,无法截断表 ‘某表’,因为该表正由 FOREIGN KEY 约束引用。

我的解决方法是将在创建或重新启用时检查现有改为否

这个类型支持前后滚动取得纪录next()、previous(),回到第一行first(),同时还支持要去的ResultSet中的第几行absolute(int n),以及移动到相对当前行的第几行relative(int n),要实现这样的ResultSet在创建Statement时用如下的方法。

Statement st = conn.createStatement(int resultSetType, int resultSetConcurrency)

ResultSet rs = st.executeQuery(sqlStr)

其中两个参数的意义是:

resultSetType是设置ResultSet对象的类型可滚动,或者是不可滚动。取值如下:

ResultSet.TYPE_FORWARD_ONLY只能向前滚动

ResultSet.TYPE_SCROLL_INSENSITIVE和Result.TYPE_SCROLL_SENSITIVE这两个方法都能够实现任意的前后滚动,使用各种移动的ResultSet指针的方法。二者的区别在于前者对于修改不敏感,而后者对于修改敏感。

resultSetConcurency是设置ResultSet对象能够修改的,取值如下:

ResultSet.CONCUR_READ_ONLY 设置为只读类型的参数。

ResultSet.CONCUR_UPDATABLE 设置为可修改类型的参数。

所以如果只是想要可以滚动的类型的Result只要把Statement如下赋值就行了。

Statement st = conn.createStatement(Result.TYPE_SCROLL_INSENITIVE,

ResultSet.CONCUR_READ_ONLY)

ResultSet rs = st.excuteQuery(sqlStr);


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11171097.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存