jdbc向sqlserver插入数据时报错,SQLServerException: 不支持从 UNKNOWN 到 UNKNOWN 的转换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jdbc向sqlserver插入数据时报错,SQLServerException: 不支持从 UNKNOWN 到 UNKNOWN 的转换相关的知识,希望对你有一定的参考价值。
我在前端将acc、stock、bs、price、qtybs输入的值传入后端(log打印出前端输入的值),但是持久化到sqlserver时出问题了。数据库里acc、stock、bs、price、qtybs的类型是char,而我传acc和bs时带有字母,如果sql不插入acc和bs时则成功持久化到数据库了。我想问一下,我的sql语句应该怎么写呢?
不知道是哪行的问题可能是这个结果集是只能迭代一次的 不能用rs.beforeFirst()这个方法
也就是程序说的只进
你可以创建一个滚动的结果集 把之前某行换成
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE)
我也是猜的 可以试一下~ 参考技术A 我自己也遇到了这个问题,后来发现是因为xsd中定义的类型与数据库不兼容,比如TimeStamp、Date类型的都不行。要改xsd中类型为string。仅供参考
通过android和JDBC将变量值插入Sql server
【中文标题】通过android和JDBC将变量值插入Sql server【英文标题】:Insert variable value into Sql server through android and JDBC 【发布时间】:2016-02-24 06:14:02 【问题描述】:我无法从我的 SQLite 数据库向我的 SQL Server 2008 插入值。这是我尝试使用大量示例的代码,但失败了。
dd =MainActivity.this.openOrCreateDatabase("Sellapp", MODE_PRIVATE, null);
Cursor crs = dd.rawQuery("SELECT * FROM customer", null);
while(crs.moveToNext())
String uname = crs.getString(crs.getColumnIndex("id"));
String ucode= crs.getString(crs.getColumnIndex("cust_name"));
Log.v("executess", uname);
PreparedStatement stmt = connect.prepareStatement("insert into item_device (im_code, im_desc) values (?, ?");
stmt.setString(1, uname);
stmt.setString(2, ucode);
stmt.executeUpdate();
Log.v("EExecutess", ucode);
在变量 uname 中,你的代码有我的数据库值。当我试图从这些变量中列出值时,我可以做到这一点而不会出现任何错误。但是当我尝试将整个表插入 SQL 服务器时,我做不到。我尝试了其他问题的示例,但没有人适合我的问题。请任何人帮助。提前谢谢..
【问题讨论】:
你如何连接到sqlserver,你是使用api还是其他方式? @Çağrı 使用 jdbc。我有一个连接类。与 SQL 服务器的连接工作正常,因为 SQLite 数据库中的值只是从服务器中获取的。现在我正试图在同一个数据库中的另一个表上插入。 【参考方案1】:您将需要一个 Web 服务来处理 SQLServer 访问。您不能直接从移动设备访问 SQLSERVER。
【讨论】:
我正在从我的系统访问它。我可以使用 jdbc 驱动程序访问 SQL 服务器。从 SQL 服务器中选择值正在工作。当我以正常插入方法插入值时,它正在插入。我的问题是我不能在变量中插入值..我不知道通过哪种方法可以做到这一点。【参考方案2】:我自己发现的。我从没想过它很简单。我在这里发布我的答案。可能会对某人有所帮助..可以使用Batch execution 来完成
dd = MainActivity.this.openOrCreateDatabase("Sellapp", MODE_PRIVATE, null);
Cursor crs = dd.rawQuery("SELECT * FROM customer", null);
while(crs.moveToNext())
String uname = crs.getString(crs.getColumnIndex("id"));
String ucode = crs.getString(crs.getColumnIndex("cust_name"));
String INSERT_RECORD = "insert into item_device(im_code, im_desc) values(?,?)";
PreparedStatement pstmt = connect.prepareStatement(INSERT_RECORD);
pstmt.setString(1, uname);
pstmt.setString(2, ucode);
pstmt.addBatch();
// execute the batch
int[] updateCounts = pstmt.executeBatch();
【讨论】:
以上是关于jdbc向sqlserver插入数据时报错,SQLServerException: 不支持从 UNKNOWN 到 UNKNOWN 的转换的主要内容,如果未能解决你的问题,请参考以下文章
通过android和JDBC将变量值插入Sql server