一般情況下,數據庫應該是放在雲服務器等存儲,但為何微信等軟件,一卸載,通訊錄能夠保存,但所有的聊天記錄等就不見了,我們可以實驗下,在電腦上設計好表,在手機上存儲數據庫。
一、建數據庫
1、打開RAD Studio XE8,在右側欄中找到Data Explorer,找到SQLite,右鍵->Add new Connection,填寫名字;
2、保持上側不變,在下欄中的Database中選擇文件,一般是新建個文件夾,在文件夾中的文件名里填寫****.s3db,注意后綴名是.s3db,自定義后即可;
3、在框中填寫User_Name、PassWord,選擇Entry為128加密,LockingMode為Normal,StringFormat為Unicode,點擊Test,選擇好Profile,即可彈出successfully框;
4、在右側的SQL Script中寫入建表代碼:
create table user(
id int(10),
name varchar(100)
)【注意為小括號】



執行后,說明建表user成功。
二、使用數據庫
1、新建工程,在.cpp文件中加入頭文件#include<System.IOUtils.hpp>;
2、在剛剛建好的Connection中,將Table里的User拖曳至Form中,就生成了MydemoConnection、Usertable兩個組件,記得把Connection和Action設為true;
3、開始加入label和button組件,用於顯示數據,再加入組件 BindNavigator,在DataSourse中選擇BindSourceDB1(自動生成);
4、加入FDGUIxWaitCursor1;
5、打開View->LiveBindings Designer,在面板中將屬性和可編輯的edit相連,BindNavigator會自動與*相連:

6、點擊ImageControl的OnChange事件,寫入代碼:
void __fastcall TForm2::ImageControl1Change(TObject *Sender)
{
this->UserTable->Edit();
this->UserTable->FieldByName("picture")->Assign(this->ImageControl1->Bitmap);
}
或:點擊Table組件的各種事件,做相應的觸發動作,如:
void __fastcall TForm2::UserTableBeforePost(TDataSet *DataSet)
{
this->UserTable->Edit();
this->UserTable->FieldByName("picture")->Assign(this->ImageControl1->Bitmap);
}
7、點擊MydemoConnection的BeforeConnect事件,寫入代碼:
void __fastcall TForm2::MydemoConnectionBeforeConnect(TObject *Sender)
{
this->MydemoConnection->Params->Values["Database"]= System::Ioutils::TPath::Combine(System::Ioutils::
TPath::GetDocumentsPath(),"Mydemo.s3db");
}
8、在電腦上運行時,效果如圖,點擊菜單欄的各個按鈕,可方便地實現數據的增刪改查。

三、在手機運行
1、打開cmd,找到C:\>Users\Public\Documents\Embarcadero\Studio\FireDAC路徑下的兩個 .ini 文件,將其添加到工程中,以及把在最初生成數據庫的.s3db文件,同樣加入工程中;
【注意:打開Project->Deployment,檢查兩個ini文件是否為 \assets\internal\】
2、運行前,把Usertable設為false,因為數據庫文件較大時,手機會卡住打不開,所以可以加一個button來控制數據庫開關,無需服務器也可看到數據。