gpt4 book ai didi

java - jTDS JDBC 驱动程序 : getNString() throws error

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:10:27 25 4
gpt4 key购买 nike

我正在使用 jtDS JDBC 驱动程序,当我调用 ResultSet.getNString(index); 时,出现以下异常:

run:
Exception in thread "main" java.lang.AbstractMethodError: net.sourceforge.jtds.jdbc.JtdsResultSet.getNString(I)Ljava/lang/String;
at javasql.ProductsController.PrePopulate(ProductsController.java:51)
at javasql.ProductsController.<init>(ProductsController.java:37)
at javasql.Program.main(Program.java:25)
Java Result: 1
BUILD SUCCESSFUL (total time: 6 seconds)

当我使用 getString(index) 时它工作正常..只有 getNString() 我有问题并且我的 MSSQL 表中的列被定义作为 NVarChar。那么,是什么给了? jtDS不支持getNString()吗?也许它通过相同的 getString() 函数同时获取 VarCharNVarChar

编辑:

相关的 unicode 问题.. 我可以看到尝试使用 Unicode 也无法插入。我的列定义为 nvarchar(255),但以下 INSERT 语句不起作用:

private final String INSERT_FORMAT = "INSERT INTO Products (Name, Price, QuantityInStock) VALUES (N'%s', %s, %s)";

public void Insert(Product p) {
products.add(p);
try {
statement.addBatch(String.format(INSERT_FORMAT, p.getName(), p.getPrice(), p.getQuantityInStock()));
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}

public void SaveChanges() {
try {
statement.executeBatch();
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
RefreshData();
}

我输入的 unicode 字符在数据库中显示为问号。当您忘记在插入语句中的上述参数前添加 N 时,通常会发生这种情况。但在这里您可以看到我清楚地指定了它。 JtDS 的功能列表确实说它支持 NVARCHAR、NTEXT 等。但目前我只看到问题。我做错了什么?

编辑 2

问题 1 已解决。我通过 SSMS 将一些汉字直接插入到数据库中,当我使用 getString(index) 时,它工作正常。所以我猜 jTDS 似乎对所有文本类型都使用 getString。奇怪然后它不会为 getNString(index) 函数抛出某种不受支持的异常。

所以,现在我们剩下的问题是如何将 unicode 数据插入 NVARCHAR 列。这里肯定有人有这方面的经验吗?

编辑 3

我更改了我的代码以在每个方法中使用准备好的语句而不是尝试使用批处理并使用 setInt、setString 等方法。但是,我仍然遇到同样的问题......如果我将 setString() 用于 unicode,它会插入 ???进入我的数据库。如果我使用 setNString(),那么我会得到与我在执行 getNString 时在这篇文章顶部收到的错误相同的错误...这太疯狂了...如果这个驱动程序实际上不支持 unicode,它怎么会变得如此流行??我在这里错过了什么?该网站确实说它支持 NVARCHAR 等。那么我需要做什么疯狂的不直观的事情才能使这项工作正常进行???

最佳答案

getNString 是随 Java 1.6/JDBC 4.0 添加的。看起来你的驱动程序太老了。

关于java - jTDS JDBC 驱动程序 : getNString() throws error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12575194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com