一、设置数据库
- 解压缩:mysql-workbench-community-6.3.4-win32-noinstall、mysql-5.6.25-win32
- 打开mysql-5.6.25-win32到bin,打开mysqld.exe,执行后自动退出后,打开mysql-workbench-community-6.3.4-win32-noinstall中的MySQLWorkbench.exe,即可打开数据库,自定义新建连接即可,这个较为方便,解压后直接使用,无需再去配置环境。
- 数据的字符集的统一:utf-8_general_ci;
- select UUID():查询表中ID地址,varchar32位存储;
- 图片的存储:相对或绝对路径//直接存放(使用BLOB类型);
二、在RAD Studio XE8中的设置:
注意:FDconnection、TDataSource、FDQuery是配套出现的
- 新建工程,在面板中点击FireDAC,选择TFDConnection;
- Drivername设置为Mysql,Connected设为true(若报错,则将lib目录下的libmysql.dll复制到c:/windows目录下,注意要区分32位和64位 // 或在环境变量中设置path,设置mysql的路径);
- 在Params中填写DataBase名、端口(3306)、用户名(一般为root)、密码、server 的IP地址
- 注意:LoginPrompt置为false,ChracterSet改为utf8,点击Connection设为true;
- 找到TFDQuery1,设置connection为FDconnection1,在SQL中写sql语句,一般为查询,点击OK;Active设置为True;
- 在组件面板Data Access找到TDataSource,放入form,在DataSet双击得到FDQuery1
- 可以添加多个组件,然后打开View->LiveBindings Designer,在面板中将属性和组件相连,组件为可编辑的edit,箭头为双向时即为可修改,组件为只读,箭头为单向,即为只读;
- 在FDQuery1中的Active中设置true,在将FDGUIxWaitCursor1组件拖至form中,运行即可显示数据库数据。
三、实现多数据查询和操作
- 加入多个按钮,双击方法,写入this->DataSource1->DataSet->,根据next、prior、first、last,可显示不同位置的数据;
- 在FDQuery1中SQL栏中,根据sql语句的不同,展示不同数据;
- 找到TFDQuery1,在SQL中写sql语句,例如where age=:Age(:后面为可任取名字,Age、abc等等);
- 在prames中选择省略号,双击内容,将DataType选为ftString(根据属性在数据库中的类型来确定),下面的框会符合条件,在value框中填入条件值;
- 关闭弹框后,将Active设为True。
五 、删除(用代码控制,其余增删改都类似)
- 找到TFDQuery1,在SQL中写sql语句,例如where age=:Age(:后面为可任取名字,Age、abc等等);
- 在prames中选择省略号,双击内容,将DataType选为ftString(根据属性在数据库中的类型来确定),下面的框会符合条件,在value框中填入条件值;
//注意此处可以预先设置SQL语句,变量ID、NAME,执行完当前语句后要在后面加上select 语句,否则报错
void __fastcall TForm1::Button1Click(TObject *Sender)
{
this->FDQuery1->Active = false;
this->FDQuery1->ParamByName("ID")->AsString = this->EditQuery->Text;
this->FDQuery1->ParamByName("NAME")->AsString = this->Edit6->Text;
this->FDQuery1->Active = true;
this->FDQuery1->Active = false;
this->FDQuery1->SQL->Clear();
this->FDQuery1->SQL->Add("select * from hello.User");
this->FDQuery1->Active = true;
}
//无需事先设置变量AD, 若用this->FDQuery1->ExecSQL();则无需新加SQL语句
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//select * from hello.User where id=:ID AND username=:NAME;
this->FDQuery1->Active = false;
this->FDQuery1->SQL->Clear();
this->FDQuery1->SQL->Add("delete from hello.User where Address=:AD");
this->FDQuery1->ParamByName("AD")->AsString = this->Edit6->Text;
//无需在prames中设置,在->后面的AsString即类似将DataType选为ftString指定类型,若为id则应改为AsInteger.
this->FDQuery1->ExecSQL();
}
1、在原有数据源操作上,放入ImageControl1组件,指向Picture属性后,先按修改或新建按钮,必要代码为:(保证该代码在点击图片框之前就执行)
this->DataSource1->DataSet->Edit();
2、使得图片框处于编辑状态,再插入图片,按保存按钮,代码为:
this->DataSource1->DataSet->FieldByName("Picture")->Assign
(this->ImageControl1->Bitmap);
this->DataSource1->DataSet->Post();