第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

PreparedStatement 不適用于 Java 中的 Sybase IQ

PreparedStatement 不適用于 Java 中的 Sybase IQ

MMTTMM 2022-12-21 15:08:06
我和我的團(tuán)隊(duì)遇到了一個(gè)問題。我們?cè)噲D從 Sybase IQ 數(shù)據(jù)庫中檢索一些數(shù)據(jù),并使用where子句過濾掉并獲取特定數(shù)據(jù)。SQL 已經(jīng)過測試并且工作正常,但在使用準(zhǔn)備語句時(shí)失敗。測試完成:如果我們運(yùn)行查詢(有或沒有 where 子句參數(shù)),它工作正常。如果我們使用在 Prepared Statement 中硬編碼的參數(shù)運(yùn)行查詢,它也可以正常工作。如果我們以編程方式設(shè)置準(zhǔn)備好的語句的參數(shù),它是行不通的。上述測試確認(rèn) JDBC 連接工作正常。使用 PreparedStatement、JdbcTemplate 或 NamedParameterJdbcTemplate 時(shí)也會(huì)出現(xiàn)同樣的錯(cuò)誤,因此我懷疑 PreparedStatement 和 Sybase IQ 之間可能存在問題。誰能幫忙調(diào)查一下?我們已經(jīng)找到了一個(gè)解決方法,但了解為什么它不起作用會(huì)非常有用。我發(fā)現(xiàn)了非常相似的線程(How do I execute PreparedStatement(select object_id()) in sybase iq?)關(guān)于同一問題,但沒有人在那里提供可接受的正確答案,所以我決定為此創(chuàng)建一個(gè)新問題。使用的代碼是:Class.forName("com.sybase.jdbc4.jdbc.SybDriver");PreparedStatement stmt = con.prepareStatement("select * from myView where off = ? and acc = ?");stmt.setString(1, "260");stmt.setString(2, "9050V");ResultSet set = stmt.executeQuery();錯(cuò)誤信息是:Exception in thread "main" java.sql.SQLException: JZ0SA: Prepared Statement: Input parameter not set, index: 0.    at com.sybase.jdbc4.jdbc.SybConnection.getAllExceptions(Unknown Source)    at com.sybase.jdbc4.jdbc.SybStatement.handleSQLE(Unknown Source)    at com.sybase.jdbc4.jdbc.SybStatement.sendQuery(Unknown Source)    at com.sybase.jdbc4.jdbc.SybPreparedStatement.sendQuery(Unknown Source)    at com.sybase.jdbc4.jdbc.SybStatement.executeQuery(Unknown Source)    at com.sybase.jdbc4.jdbc.SybPreparedStatement.executeQuery(Unknown Source)使用的 JDBC 驅(qū)動(dòng)程序(Maven 依賴項(xiàng)):<dependency>            <groupId>com.sybase</groupId>            <artifactId>jconn4</artifactId>            <version>7.0</version></dependency>
查看完整描述

3 回答

?
拉丁的傳說

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊

我遇到了與 sybase iq 相同的問題。preparedStatement.execureQuery()我在聲明之前添加了以下兩行代碼來解決問題。


 preparedStatement.setFetchSize(Integer.MAX_VALUE);

 preparedStatement.setFetchDirection(ResultSet.FETCH_FORWARD);

不確定這樣做是否正確,但它奏效了。


要么


你可以設(shè)置 preparedStatement.setCursorName("SomeCursorName"); 這個(gè)也解決了這個(gè)問題。但在多線程環(huán)境中,您需要設(shè)置一個(gè)唯一的游標(biāo)名稱。可能正在使用隨機(jī)數(shù)或其他東西并且不要?jiǎng)?chuàng)建太多游標(biāo)將它們限制為將同時(shí)執(zhí)行的并發(fā)線程數(shù)。


查看完整回答
反對(duì) 回復(fù) 2022-12-21
?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊

我使用了 jconn4 連接屬性 LITERAL_PARAMS=true 并且工作正常。小心,性能會(huì)受到影響。

當(dāng)設(shè)置為“true”時(shí),由 PreparedStatement 接口中的 setXXX 方法設(shè)置的任何參數(shù)都會(huì)在 SQL 語句執(zhí)行時(shí)逐字插入。如果設(shè)置為“false”,則參數(shù)標(biāo)記將保留在 SQL 語句中,并將參數(shù)值單獨(dú)發(fā)送到服務(wù)器。


查看完整回答
反對(duì) 回復(fù) 2022-12-21
?
MM們

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊

stmt.setString(1, "260"); stmt.setString(2, "9050V");

數(shù)組索引從 0 開始不是嗎?在您使用的 API 中,它不是基于零的索引嗎?


查看完整回答
反對(duì) 回復(fù) 2022-12-21
  • 3 回答
  • 0 關(guān)注
  • 178 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)