一般情况下,数据库应该是放在云服务器等存储,但为何微信等软件,一卸载,通讯录能够保存,但所有的聊天记录等就不见了,我们可以实验下,在电脑上设计好表,在手机上存储数据库。
一、建数据库
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:>UsersPublicDocumentsEmbarcaderoStudioFireDAC路径下的两个 .ini 文件,将其添加到工程中,以及把在最初生成数据库的.s3db文件,同样加入工程中;
【注意:打开Project->Deployment,检查两个ini文件是否为 assetsinternal】
2、运行前,把Usertable设为false,因为数据库文件较大时,手机会卡住打不开,所以可以加一个button来控制数据库开关,无需服务器也可看到数据。