导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2015/3/6 14:00:46
标题:
求助firedac连接sqlite相对路径
浏览:2506
加入我的收藏
楼主:
var TempPath,SQLStr:string; begin FDConnection1.Params.Add('Drivername=SQLite'); FDConnection1.Params.Add('OpenMode=CreateUTF'); //这是默认值, 可选 CreateUTF16(Unicode) FDConnection1.Params.Add('StringFormat=Unicode'); TempPath:=ExtractFilePath(application.ExeName); TempPath:='''database='+TempPath+'data\data.sdb'''; FDConnection1.Params.Add(TempPath); FDConnection1.Connected := True; 以上代码运行总提示【firedac】【phys】【sqlite】error:no such table:xxx. 把FDConnection1.Params.Add(TempPath);改成FDConnection1.Params.Add(e:\data\data.sdb)就运行正常
----------------------------------------------
-
作者:
2015/3/7 20:22:37
1楼:
var TempPath,SQLStr:string; begin FDConnection1.Params.Add('Drivername=SQLite'); FDConnection1.Params.Add('OpenMode=CreateUTF'); //这是默认值, 可选 CreateUTF16(Unicode) FDConnection1.Params.Add('StringFormat=Unicode'); TempPath:=ExtractFilePath(application.ExeName); database=TempPath+'data\data.sdb'; FDConnection1.Params.Add(TempPath); FDConnection1.Connected := True;
----------------------------------------------
-
作者:
2015/3/8 14:05:57
2楼:
var TempPath,SQLStr:string; begin FDConnection1.Params.Add('Drivername=SQLite'); FDConnection1.Params.Add('OpenMode=CreateUTF'); //这是默认值, 可选 CreateUTF16(Unicode) FDConnection1.Params.Add('StringFormat=Unicode'); TempPath:=ExtractFilePath(application.ExeName); //database=TempPath+'data\data.sdb';//这句有问题,请再帮忙看看谢谢 FDConnection1.Params.Add(TempPath); FDConnection1.Connected := True;文字
----------------------------------------------
-
作者:
2015/3/8 15:51:52
3楼:
var TempPath,SQLStr:string; begin FDConnection1.Params.Add('Drivername=SQLite'); FDConnection1.Params.Add('OpenMode=CreateUTF'); //这是默认值, 可选 CreateUTF16(Unicode) FDConnection1.Params.Add('StringFormat=Unicode'); TempPath:=ExtractFilePath(application.ExeName); //database=TempPath+'\data\data.sdb';//这句有问题,请再帮忙看看谢谢 FDConnection1.Params.Add(TempPath); FDConnection1.Connected := True;
----------------------------------------------
-
作者:
2015/3/9 9:07:44
4楼:
slm75 直接输入database=TempPath+'\data\data.sdb';编译肯定会保错,请帮忙重新看看,谢谢
----------------------------------------------
-
作者:
2015/3/9 14:00:20
5楼:
FDConnection1.Params.Add(TempPath); 这种代码 只有 XX 才能写得出来。 XX 是骂人的话。各位自己对号入座吧。 这都多长时间了,这点小 BUG,都解决不了,真是个大XX。
----------------------------------------------
(C)(P)Flying Wang
作者:
2015/3/9 14:08:24
6楼:
Flying Wang,你会的就请解答问题,一直用ado,这种写法就可以,我只是Delphi爱好者,提问题是希望你们高手帮忙,不是要你xx
----------------------------------------------
-
作者:
2015/3/9 14:15:19
7楼:
我不是靠Delphi吃饭,只是业余爱好者,完全自学,某些高手能解答就动动手指,不想动手的请你素质高点,文明点,不要xx
----------------------------------------------
-
作者:
2015/3/9 14:22:55
8楼:
请楼主用 FDConnection1 的向导 建立连接。 点鼠标右键 就有向导了。 然后,你还不知道你错在哪里,那请楼主接受 XX 这个称号。
----------------------------------------------
(C)(P)Flying Wang
作者:
2015/3/9 14:40:08
9楼:
XX 们真让人头痛..
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
2015/3/9 15:39:07
10楼:
wang_80919 (Flying Wang),tuesdays (spser)问题我都写明了 FDConnection1.Params.Add(e:\data\data.sdb);这样运行肯定没有问题,如果安装换了其他盘,怎么办,是怎么让你头痛了,这么基本的问题你不愿意答就一边去,没有那个强求你,不要xx,有没有素质,wang_80919 (Flying Wang)你说的向导我知道,你知道就爽快点,不知道就不要xx了
----------------------------------------------
-
作者:
2015/3/9 15:51:16
11楼:
我只能说,楼主不听话,我也就不需要帮楼主了。88。 另外我说错了,不能叫 向导,应该叫 FireDAC Connection Editor 双击控件就有了。
----------------------------------------------
(C)(P)Flying Wang
作者:
2015/3/9 16:07:23
12楼:
是我自己走入误区了,以为和ado一样,需要获取application的路径,wang_80919 (Flying Wang)说的我是很早就知道的,经过验证是不需要获取application的路径,是我的失误,还是谢谢wang_80919 (Flying Wang)。 最后结贴,问题解决了
----------------------------------------------
-
作者:
2015/3/9 22:07:55
13楼:
procedure TFmain.ReleaseDB;//释放数据库 var rs:TresourceStream; begin if not System.SysUtils.FileExists(dm.DBFileName) then begin try rs:=TresourceStream.Create(Hinstance,'mydb',RT_Rcdata); rs.SaveToFile(dm.DBFileName); finaly rs.Free; end; end; end; //Udm.pas function Tdm.DBFileName: string; var spath : string; begin spath := System.IOUtils.TPath.GetDocumentsPath; // or GetPublicPath {$IFDEF Android} result := spath + '/' + DBname; // DBname in Usys {$ENDIF} {$IFDEF IOS} result := spath + '/' + DBname; // DBname in Usys {$ENDIF} {$IFDEF MSWINDOWS} result := spath + '\' + DBname; // DBname in Usys {$ENDIF} end; function Tdm.InitDbOk: boolean; begin result := true; if fileexists(DBFileName) then begin FDConn.DriverName := 'SQLite'; FDConn.LoginPrompt := false; FDConn.Params.Clear; FDConn.Params.Values['Database'] := DBFileName; FDConn.Params.Values['DriverID'] := 'SQLite'; FDConn.Params.Values['CharacterSet'] := 'utf8'; try FDConn.Connected := true; except result := false; end; end else result := false; end; 仅供参考,睡觉喽~
----------------------------------------------
-文科男,程序员。
作者:
2015/3/9 22:16:50
14楼:
补充下:用模拟器看下路径就知道了。
此帖子包含附件: 大小: 36.9K
----------------------------------------------
-文科男,程序员。
作者:
2015/3/10 1:53:51
15楼:
官方文件是教這樣的 FDConnection1.params.Add('DriverID=SQLite'); FDConnection1.params.Add('Database=$(RUN)\files\MyData.db3'); http://docs.embarcadero.com/products/rad_studio/firedac/frames.html?frmname=topic&frmfile=index.html 记下这网址吧
----------------------------------------------
-
作者:
2015/3/10 8:48:10
16楼:
happyhills (老妖),pp0123 (pp0123)谢谢两位热心解答,一并收了
----------------------------------------------
-
作者:
kayuk (鑫森淼焱垚)
▲▲▲▲△
-
普通会员
2015/3/10 19:16:03
17楼:
给楼主看下我的代码,看是否能解决你的问题: dbFile := Extractfilepath(paramstr(0))+'\sqlite.db'; if FileExists(dbFile) then begin FDConnection1.Open('DriverID=SQLite; Password=123456; Database='+dbFile); FDQuery1.Open('SELECT * FROM TableName'); end;
----------------------------------------------
-
作者:
ti9er (TiGeR)
★☆☆☆☆
-
普通会员
2015/6/8 16:40:13
18楼:
也遇到这个问题了,按15楼的处理通过,多谢
----------------------------------------------
-