1. 程式人生 > >C++Builder下如何用FireDAC控制元件訪問SQLite資料庫

C++Builder下如何用FireDAC控制元件訪問SQLite資料庫

(同一個世界,同一個夢想,交流學習C++Builder XE10,傳承c++builder的魅力!歡迎各地朋友加入我的QQ群484979943,進群密碼“BCB”,同時也請將該群號廣為宣傳,希望能夠廣集各方高手,共同進步。)

軟體及版本:C++Builder 10.2.2 tokyo,SQLite Expert Professional 3

1、下載和安裝配置SQLITE資料庫SQLite Expert Professional 3

執行資料庫軟體,建立資料庫test.db和表mytable。


2、建立專案新增控制元件

主視窗命名為FormMain,擺放FDConnection、FDQuery、FDPhysSQLiteDriverLink、FDGUIxWaitCursor、DataSource、DBGrid、Button控制元件.


DBGrid1的DataSource設為DataSource1

DataSource1的DataSet設為FDQuery1

FDQuery1的Connection屬性設為FDConnection1

FDConnection1的DriverName設為SQLite,LoginPrompt設為False

3、在FormMain的OnActivate事件中繫結開啟資料庫檔案

void __fastcall TFormMain::FormActivate(TObject *Sender)
{
AnsiString mainPath=ExtractFilePath(Application->ExeName);//獲取執行程式的絕對路徑
FDConnection1->Connected=false;
if(mainPath=="D:\\test\\Win32\\Debug\\") //此處目錄區分大小寫哈

    {
    FDConnection1->Params->Database="D:\\test\\test.db";
    }
else
    {
    FDConnection1->Params->Database=mainPath+"\\test.db";
    }

FDConnection1->Connected=true;

}

4、向表格中插入資料

//---------------------------------------------------------------------------
void __fastcall TFormMain::Button1Click(TObject *Sender)
{
AnsiString mySql;
AnsiString myName="張三";
int myAge=78;

FDQuery1->Close();
FDQuery1->SQL->Clear();
mySql="insert into mytable values(:p1,:p2)";
FDQuery1->SQL->Text=mySql;
FDQuery1->ParamByName("p1")->Value=myName;
FDQuery1->ParamByName("p2")->Value=myAge;
FDQuery1->ExecSQL();

if(FDQuery1->RowsAffected>0)
    {
    ShowMessage("插入成功!");
    }
}

5、查詢資料

//---------------------------------------------------------------------------
void __fastcall TFormMain::Button2Click(TObject *Sender)
{
AnsiString mySql;
FDQuery1->Close();
FDQuery1->SQL->Clear();
mySql="select * from mytable";
FDQuery1->SQL->Text=mySql;
FDQuery1->Open();
}

優劣勢分析:

FireDAC是RAD自帶的資料庫訪問控制元件,優點是通用,可以訪問幾乎所有資料庫,缺點是釋出時需要打包驅動程式,對於檔案資料庫還算可以,但是對於網路資料庫不是十分方便。