firedac sqlite在Android發佈發生 no such table: |
答題得分者是:aftcast
|
pcernet
初階會員 發表:69 回覆:113 積分:41 註冊:2002-11-29 發送簡訊給我 |
Remote Path [SQLite]no such table:datas .... 在 windows OS 下可正常運作,但在 Android OS 下會出現 FireDAC][Phys][ERROR:no such table:datas 請先進們不吝賜教,謝謝! |
pcernet
初階會員 發表:69 回覆:113 積分:41 註冊:2002-11-29 發送簡訊給我 |
抱歉, delphi格式編排有問題又無法修改,重貼如下,謝謝!
Deployment Manager add file mydata.db3 Remote Path assets\internal\ FDConnection1.Params.Clear; FDConnection1.Params.Add('DriverID=SQLite'); FDQuery1.Connection := FDConnection1; {$IFDEF MSWINDOWS} ss:=ExtractFilePath(ParamStr(0)); FDConnection1.Params.Add('Database=' ss 'mydata.db3'); {$ELSE} ss:=TPath.GetDocumentsPath; //TPath.GetSharedDocumentsPath;TPath.GetHomePath; FDConnection1.Params.Add('Database=' ss 'mydata.db3'); // FDConnection1.Params.Values['Database'] := TPath.Combine(TPath.GetDocumentsPath, 'mydata.db3'); {$ENDIF} FDConnection1.Connected := True; FDQuery1.Open('SELECT * FROM datas'); //發生錯誤 [FireDAC][Phys][SQLite]ERROR:no such table:datas .... 在 windows OS 下可正常運作,但在 Android OS 下會出現 [FireDAC][Phys][SQLite]ERROR:no such table:datas 請先進們不吝賜教,謝謝!
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
ss:=TPath.GetDocumentsPath PathDelim; ===================引 用 pcernet 文 章=================== ss:=TPath.GetDocumentsPath; FDConnection1.Params.Add('Database=' ss 'mydata.db3');
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
pcernet
初階會員 發表:69 回覆:113 積分:41 註冊:2002-11-29 發送簡訊給我 |
感謝aftcast的熱心答覆,多加個路徑字元結果還是不行!
將資料檔(datas.db3)發佈到 assets\ ,也就是 \mnt\sdcard\Android\data\com.xxx.xxx\files 資料夾內 可以看見該資料檔,發佈沒有問題! ss:=TPath.GetSharedDocumentsPath PathDelim; FDConnection1.Params.Values['Database'] := TPath.Combine(ss, 'mybus.db3'); 操作時仍會發生[FireDAC][Phys][SQLite]ERROR:no such table:datas 在本地以sqlitestudio開啟datas.db3時,程式會顯示是Sqlite 3,並且Table會顯示1, 但以FTP直接開啟Android遠端(\mnt\sdcard\Android\data\com.xxx.xxx\files)的datas.db3,程式會顯示 Sqlite 2,並且Table沒有任何資料,不知道是不是這個問題,請先進們不吝指教,謝謝。 |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
hello 你的程式碼不要再動了,不然會很亂…怎麼說呢?
如果你要用 TPath.Combines(......) 那就不能有 ss 就不能含有 PathDelim 如果你要用 prarams.add(........) 那 ss 就有要PathDelim 還有,你應該是發到 assets\internal\ 可是我又看你這次寫 assets\ 這樣而已… 總的講, 發到 assests\internal\ 然後 FDConnection1.Params.Values['Database'] := TPath.Combine(ssTPath.GetSharedDocumentsPath, 'mybus.db3'); 還有,mybus.db3 最好是大小寫有分,儘量不要寫 mybus.db3然後上傳的又是 MYbus.db3之類的。 請用以上的程式與動作試看看再說。不要再動程式碼。 good luck 。 ===================引 用 pcernet 文 章=================== 感謝aftcast的熱心答覆,多加個路徑字元結果還是不行! 將資料檔(datas.db3)發佈到 assets\ ,也就是 \mnt\sdcard\Android\data\com.xxx.xxx\files 資料夾內 可以看見該資料檔,發佈沒有問題! ss:=TPath.GetSharedDocumentsPath PathDelim; FDConnection1.Params.Values['Database'] := TPath.Combine(ss, 'mybus.db3'); 操作時仍會發生[FireDAC][Phys][SQLite]ERROR:no such table:datas 在本地以sqlitestudio開啟datas.db3時,程式會顯示是Sqlite 3,並且Table會顯示1, 但以FTP直接開啟Android遠端(\mnt\sdcard\Android\data\com.xxx.xxx\files)的datas.db3,程式會顯示 Sqlite 2,並且Table沒有任何資料,不知道是不是這個問題,請先進們不吝指教,謝謝。
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
因系統好像無法讓我做 修改。我只好重po
總的講, 發到 assests\internal\ 然後 FDConnection1.Params.Values['Database'] := TPath.Combine(TPath.GetSharedDocumentsPath, 'mybus.db3'); 若真的還有問題, 有人說把它發到 .\assests\internal\ 一點,反斜線在 assests前面。 先試再回報吧。
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
pcernet
初階會員 發表:69 回覆:113 積分:41 註冊:2002-11-29 發送簡訊給我 |
感謝您的熱心引導,問題已經解決!
在Deployment 的 Release項目中也加入資料檔,然後移除後重新安裝即可。 最終的程式碼如下: (選擇將資料檔發佈到發佈到assets\) FDConnection1.Params.Add('DriverID=SQLite'); FDQuery1.Connection := FDConnection1; {$IFDEF MSWINDOWS} ss:=ExtractFilePath(ParamStr(0)); {$ELSE} ss:=TPath.GetSharedDocumentsPath PathDelim; {$ENDIF} FDConnection1.Params.Add('Database=' ss 'mybus.db3');
再次感謝! |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
謝謝你把最終的結果與大家分享。
不過,我因此而重新省思發佈到 assets\ 下會對應到 TPath.GetSharedDocumentsPath 的結果。 這與多數人的結果不太一樣,也與官方的說法不一樣,但有一些人照官方的做也遇到你的情形… 怪怪的。可能有什麼我沒有真的深入的理解。 :p
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
我了解問題所在了,一定是我沒睡飽… XXXXXXXXXPath
在此,順便做個筆記,未來有查到此篇的人可以參考一下。 assets 到外部(sdcard)的目錄 TPath.Combine(TPath.GetSharedDocumentsPath, 'filename') { External } ===================引 用 aftcast 文 章=================== 謝謝你把最終的結果與大家分享。 不過,我因此而重新省思發佈到 assets\ 下會對應到 TPath.GetSharedDocumentsPath 的結果。 這與多數人的結果不太一樣,也與官方的說法不一樣,但有一些人照官方的做也遇到你的情形… 怪怪的。可能有什麼我沒有真的深入的理解。 :p
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |