簡體   English   中英

SQLite插入查詢錯誤

[英]SQLite insert query error

我正在使用以下查詢將數據插入到Android的SQLite數據庫中。

INSERT INTO ServerData 
VALUES('404', '192.168.145.101', '1', '1', '1'),
      ('404', '192.168.145.101', '2', '1', '1')

但我收到一個錯誤,LogCat的詳細信息如下:

11-22 15:14:56.588:E /數據庫(1609):當准備'INSERT INTO ServerData VALUES('404','192.168.145.101','1'時,在0x2e3e30上失敗1(接近“,”:語法錯誤) , '1', '1'),( '404', '192.168.145.101', '2', '1', '1')”。
11-22 15:14:56.618:W / dalvikvm(1609):threadid = 10:線程退出未捕獲異常(組= 0x40015560)
11-22 15:14:56.648:E / AndroidRuntime(1609):致命異常:AsyncTask#1
11-22 15:14:56.648:E / AndroidRuntime(1609):java.lang.RuntimeException:執行doInBackground()時發生錯誤
11-22 15:14:56.648:E / AndroidRuntime(1609):在android.os.AsyncTask $ 3.done(AsyncTask.java:200)
11-22 15:14:56.648:E / AndroidRuntime(1609):at java.util.concurrent.FutureTask $ Sync.innerSetException(FutureTask.java:274)11-22 15:14:56.648:E / AndroidRuntime(1609) :at java.util.concurrent.FutureTask.setException(FutureTask.java:125)11-22 15:14:56.648:E / AndroidRuntime(1609):at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java :308)11-22 15:14:56.648:E / AndroidRuntime(1609):at java.util.concurrent.FutureTask.run(FutureTask.java:138)11-22 15:14:56.648:E / AndroidRuntime(1609) ):at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)11-22 15:14:56.648:E / AndroidRuntime(1609):at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor。 java:581)11-22 15:14:56.648:E / AndroidRuntime(1609):at java.lang.Thread.run(Thread.java:1019)11-22 15:14:56.648:E / AndroidRuntime(1609) :引起:android.database.sqlite.SQLiteException:near“,”:語法錯誤:INSERT INTO ServerData VALUES('404','192.168.145.101','1','1','1'),(' 404' ,'192.168.145 .101','2','1','1')11-22 15:14:56.648:E / AndroidRuntime(1609):at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method)11-22 15 :14:56.648:E / AndroidRuntime(1609):在android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1763)11-22 15:14:56.648:E / AndroidRuntime(1609):at com.pcloud。 fileshare.database.DBMethods.InsertToServerTable(DBMethods.java:228)11-22 15:14:56.648:E / AndroidRuntime(1609):at com.pcloud.fileshare.dataAccess.commonMethod.updateServerTable(commonMethod.java:472)11 -22 15:14:56.648:E / AndroidRuntime(1609):at com.pcloud.fileshare.mainPages.userLogin $ backgroundTask.doInBackground(userLogin.java:238)11-22 15:14:56.648:E / AndroidRuntime(1609) ):at com.pcloud.fileshare.mainPages.userLogin $ backgroundTask.doInBackground(userLogin.java:1)11-22 15:14:56.648:E / AndroidRuntime(1609):at android.os.AsyncTask $ 2.call(AsyncTask) .java:185)11-22 15:14:56.648:E / AndroidRuntime(1609):at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:306)11 -22 15:14:56.648:E / AndroidRuntime(1609):... 4更多11-22 15:15:00.059:E / WindowManager(1609):活動com.pcloud.fileshare.mainPages.userLogin已泄露窗口com .android.internal.policy.impl.PhoneWindow $ DecorView @ 40529668最初添加到這里11-22 15:15:00.059:E / WindowManager(1609):android.view.WindowLeaked:Activity com.pcloud.fileshare.mainPages。 userLogin泄露了最初添加的窗口com.android.internal.policy.impl.PhoneWindow$DecorView@40529668 11-22 15:15:00.059:E / WindowManager(1609):at android.view.ViewRoot。(ViewRoot。 java:258)11-22 15:15:00.059:E / WindowManager(1609):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)11-22 15:15:00.059:E / WindowManager(1609) :at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)11-22 15:15:00.059:E / WindowManager(1609):at android.view.Window $ LocalWindowManager.addView(Window.java:424)11 -22 15:15:00.059:E / WindowManager(1609):在android.app.Dialog.show(Dialog.java:241) )11-22 15:15:00.059:E / WindowManager(1609):at com.pcloud.fileshare.mainPages.userLogin $ backgroundTask.onPreExecute(userLogin.java:251)11-22 15:15:00.059:E / WindowManager (1609):在android.os.AsyncTask.execute(AsyncTask.java:391)11-22 15:15:00.059:E / WindowManager(1609):at com.pcloud.fileshare.mainPages.userLogin $ 1.onItemClick(userLogin) .java:221)11-22 15:15:00.059:E / WindowManager(1609):在android.widget.AdapterView.performItemClick(AdapterView.java:284)11-22 15:15:00.059:E / WindowManager(1609) ):在android.widget.ListView.performItemClick(ListView.java:3513)11-22 15:15:00.059:E / WindowManager(1609):在android.widget.AbsListView $ PerformClick.run(AbsListView.java:1812) 11-22 15:15:00.059:E / WindowManager(1609):在android.os.Handler.handleCallback(Handler.java:587)11-22 15:15:00.059:E / WindowManager(1609):在android。 os.Handler.dispatchMessage(Handler.java:92)11-22 15:15:00.059:E / WindowManager(1609):在android.os.Looper.loop(Looper.java:123)11-22 15:15: 00.059:E / WindowManag 呃(1609):在android.app.ActivityThread.main(ActivityThread.java:3683)11-22 15:15:00.059:E / WindowManager(1609):at java.lang.reflect.Method.invokeNative(Native Method) 11-22 15:15:00.059:E / WindowManager(1609):at java.lang.reflect.Method.invoke(Method.java:507)11-22 15:15:00.059:E / WindowManager(1609):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)11-22 15:15:00.059:E / WindowManager(1609):at com.android.internal.os.ZygoteInit.main(ZygoteInit) .java:597)11-22 15:15:00.059:E / WindowManager(1609):at dalvik.system.NativeStart.main(Native Method)

相同的查詢在SQLite Expert中工作正常但在代碼中沒有

請訪問https://stackoverflow.com/a/5009740/1434631查看解決方案

您不能使用逗號分隔sqlite中插入多行。

如果使用SQLiteDatabase,那就更好了

ContentValues values = new ContentValues();
for(int i = 0; i<=5; i++) {
values.put(COLUMN_NAME, i);
values.put(COLUMN_NAME, 0);
db.insert(TABLE_NAME, null, values);
}

試試這個你不能插入由逗號分隔的多個值

INSERT INTO ServerData VALUES('404','192.168.145.101','1','1','1')

 INSERT INTO ServerData VALUES ('404','192.168.145.101','2','1','1')

嘗試這個

 INSERT INTO 'tablename' ('column1', 'column2') VALUES
    ('data1', 'data2'),
    ('data3', 'data4'),
    ('data5', 'data6'),
   ('data7', 'data8');

可以重鑄為sqlite:

 INSERT INTO 'tablename'
  SELECT 'data1' AS 'column1',
         'data2' AS 'column2'
 UNION SELECT 'data3', 'data4'
  UNION SELECT 'data5', 'data6'
  UNION SELECT 'data7', 'data8'

在SQLite中,您不能使用逗號分隔符在表中插入多行。 所以,對於你的情況,你可以試試這個:

INSERT INTO ServerData
      SELECT '404','192.168.145.101','1','1','1'
UNION SELECT '404','192.168.145.101','2','1','1';

暫無
暫無

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

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