java - SqlAnywhere 问题在 jtds Android 中返回多行
问题描述
我在使用 jtds 1.3.1 从 SqlAnywhere 数据库中检索多行时遇到了一些麻烦。我正在使用以下查询SELECT menge_pe, text, plain_text, text_is_rtf FROM hs.vk_beleg_pos WHERE belegnr IN (602397)
,它在使用“SQL Central”在交互式 SQL 窗口中执行时返回预期结果。为了清楚这些字符在 android studio 中被正确转义,为了清楚起见,它像上面这样写。但是,当我的 android 应用程序执行时,只返回一行并产生如下错误:
I/System.out: 1000.0000 menge_pe,空文本,{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Arial;}} {\colortbl;\red0\green0\blue0;}\viewkind4\ uc1\pard\cf1\lang1031\fs18 Epilox H'e4rter EC 5310\par } plain_text, 4096 text_is_rtf E/Error here 1 :: TDS 协议错误:无效的数据包类型 0xd6
出于测试目的,我暂时使用以下代码处理结果。
public void purchaseDbLookup(String orderID, List<String> results) {
SqlAnywhereConnClass cc = new SqlAnywhereConnClass("un", "pass", "db", "ip");
Connection cn = cc.getConnection();
Statement st = null;
ResultSet rs;
ResultSetMetaData rsmt;
results.clear();
try {
st = (Statement) cn.createStatement();
rs = st.executeQuery("SELECT menge_pe, text, plain_text, text_is_rtf FROM \"hs\".\"vk_beleg_pos\" WHERE belegnr IN (" + orderID + ")");
ResultSetMetaData rsmd = rs.getMetaData();
System.out.println("querying SELECT * FROM XXX");
int columnsNumber = rsmd.getColumnCount();
while (rs.next()) {
for (int i = 1; i <= columnsNumber; i++) {
if (i > 1) System.out.print(", ");
String columnValue = rs.getString(i);
System.out.print(columnValue + " " + rsmd.getColumnName(i));
}
System.out.println("");
}
我已经被这个问题困扰了一段时间,所以我希望有人能帮忙:)
提前谢谢你,马特
解决方案
这看起来像是连接/驱动程序问题。验证您使用的是正确的驱动程序 - 此线程应该会有所帮助:
推荐阅读
- javascript - 如果你省略 response.writeHead()
- deeplearning4j - 如何在 deeplearning4j 中存储和加载经过训练的数据?
- java - 映射 Java DTO 作为响应
- xml - XML 上传到 S3 存储桶,使用 Lambda/Python 摄取
- wmic - 问:在 WMIC.EXE 等受保护文件上使用 CACLS
- c++ - 问题渲染 FreeType 位图字形
- php - Need help to change value when time is between two hours
- c# - 输入值并单击按钮存款时,如何增加值金额?
- powershell - 如何将powershell代码导出到csv正确的列
- android - 如何在浮动操作按钮中添加边框