簡體   English   中英

在sqlite android中獲取現有行的插入語句

[英]Get Insert Statement for existing row in sqlite android

我在服務器上有數據庫A用於緩存,數據庫B ,因此我想從AB發送一行,為此,我需要為A中已經存在的行生成insert語句。

以下是我要完成的工作

get insert select * from table where myId = 5;

它應該返回

insert into table(myId,Col1,Col2,...) VALUES (5,'value1','value2',...);

我已經調查過這個這個 ,但都沒有解決我的問題。 提前致謝!

sqlite3命令行外殼程序可以為查詢生成這樣的輸出,但沒有列名:

sqlite> .mode insert MyTableName
sqlite> SELECT * FROM MyTable WHERE ID = 5;
INSERT INTO MyTableName VALUES(5,'value',NULL);

如果需要列名,則必須手動生成它們:

SELECT 'INSERT INTO MyTable(a, b, c) VALUES (' ||
       quote(a) || ',' ||
       quote(b) || ',' ||
       quote(c) || ');'
FROM MyTable
WHERE ID = 5;
--> INSERT INTO MyName(a, b, c) VALUES (42,'value',NULL);

(可以在Java中完成相同的字符串操作。)

如果您的程序不知道確切的數據庫架構,則可以使用PRAGMA table_info讀取每個表的列列表,並從中構造語句:

> create table MyTable(myId, Col1, Col2, [...]);
> pragma table_info(MyTable);
cid         name        type        notnull     dflt_value  pk        
----------  ----------  ----------  ----------  ----------  ----------
0           myId                    0                       0         
1           Col1                    0                       0         
2           Col2                    0                       0         
3           ...                     0                       0         

暫無
暫無

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

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