簡體   English   中英

通過從另一個查詢檢索結果將數據插入表的 Java 代碼

[英]Java code to insert data into a table by retrieving the result from another query

我有 sql 查詢,如果我必須在 sql 命令行或 IDE 中手動運行它,它運行良好。 但是我必須將其轉換為 java 代碼,並且查詢在 java 中不起作用。 Sql查詢-

"INSERT INTO table_1(column1, column2,column3, column4, column5)
SELECT DISTINCT s.computedmetric_name AS metric_name, s.display_name, FALSE 
AS is_generated,FALSE AS is_manually_marked_for_deletion, FALSE AS 
is_data_marked_for_deletion FROM db_computedmetrics_temp AS s WHERE   
s.computedmetric_name IS NOT NULL AND s.display_name IS NOT NULL AND NOT 
EXISTS (SELECT  1 FROM    db_metrics AS t WHERE   t.metric_name = 
s.computedmetric_name)"

我正在嘗試使用以下 java 代碼

String sql="Above mentioned sql query directly into this string";
Statement stmt = sqliteDBConnection.createStatement();
stmt.executeUpdate(sql);

但是在運行代碼時,我收到異常說 -

Exception in thread "main" org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (no such column: FALSE)

請注意,較早的 sql 是為 postgres DB 編寫的,而 Java 代碼正在連接到 sqllite db。 請幫助我將 sql 轉換為與 java 一起使用。 謝謝!

SQLite 不支持TRUEFALSE作為關鍵字

SQLite 沒有單獨的布爾存儲類。 相反,布爾值存儲為整數 0 (false) 和 1 (true)。

http://www.sqlite.org/datatype3.html

所以你必須將你的查詢更改為這樣的

INSERT INTO table_1(column1, column2,column3, column4, column5)
SELECT DISTINCT s.computedmetric_name AS metric_name, s.display_name, 0 
AS is_generated,0 AS is_manually_marked_for_deletion, 0 AS 
is_data_marked_for_deletion FROM db_computedmetrics_temp AS s WHERE   
s.computedmetric_name IS NOT NULL AND s.display_name IS NOT NULL AND NOT 
EXISTS (SELECT  1 FROM    db_metrics AS t WHERE   t.metric_name = 
s.computedmetric_name)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM