0

次のコードで例外が発生しています

PreparedStatement pstmt;
Connection conn = DriverManager.getConnection(
   "jdbc:jtds:sqlserver://Irfan:1433/Pictures", "sa", "ent@");      

java.sql.Blob bl=GetBolbDataFromDB();
InputStream fs = bl.getBinaryStream();
len = bl.length() ;

query = ("insert into NewPics2 VALUES(?,?,?,?)");
pstmt = conn.prepareStatement(query);
pstmt.setString(1, model);
pstmt.setString(2, catid);
pstmt.setString(3, ornid);
**pstmt.setBinaryStream(4, fs);**

完全なスタック トレースは次のとおりです。

Exception in thread "AWT-EventQueue-0" java.lang.AbstractMethodError: net.sourceforge.jtds.jdbc.JtdsPreparedStatement.setBinaryStream(ILjava/io/InputStream;)V
at jewelleryerpapplication.GUI.Orders.CheckPrice.GetPicInfo(CheckPrice.java:1157)
at jewelleryerpapplication.GUI.Orders.CheckPrice.txtModelNoKeyPressed(CheckPrice.java:2300)
at jewelleryerpapplication.GUI.Orders.CheckPrice.access$1500(CheckPrice.java:37)
at jewelleryerpapplication.GUI.Orders.CheckPrice$18.keyPressed(CheckPrice.java:702)
at java.awt.Component.processKeyEvent(Component.java:6463)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2829)
at java.awt.Component.processEvent(Component.java:6282)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1908)
4

3 に答える 3

1

簡単に言うと、jdbc ドライバーは最新バージョンの jdbc を実装していません。setBinaryStream() メソッドがありません。つまり、使用できません。完全に読み取られたイメージで setBlob() を試すことができます。

于 2013-02-21T11:22:05.610 に答える
1

スタック トレースから、呼び出したメソッドが抽象的であることがわかります。ドキュメントによると、 JtdsPreparedStatement.setBinaryStream()は、インデックス、ストリーム、および長さの 3 つの引数を取ります。

int長さパラメータとしてを追加してみてください:pstmt.setBinaryStream(4, fs);

于 2013-02-21T11:24:44.877 に答える
0

変換してみる

java.sql.Blob bl=GetBlobDataFromDB();
String fs = bl.getBytes();
于 2013-02-21T11:25:07.517 に答える