1.为了便于数据库的管理和简化sql语句,一般我们都会使用 DataModule–专门用于放置数据访问组件的框架来管理数据库组件。比如在整个程序中某些窗体可能需要查询数据库的信息,到时候只需要把一个查询组件专门用于公共查询数据的组件放在 DataModule构件中,这样就不会在多个窗口都需要添加查询组件,而且可以在DataModule构件中提前写好用于更新和查询的方法,这样就可以省去大量重复代码!
eg:
自定义函数定义:void show(AnsiString,TMyQuery *);
void exec(AnsiString,TMyQuery *);
TDateTime GetServerTime();
void TDataModule1::show(AnsiString sql,TADOQuery ADOQ)
{
ADOQ->Close();
ADOQ->SQL->Clear();
ADOQ->SQL->Add(sql);
ADOQ->Prepared;
try
{
ADOQ->Open();
}
catch(Exception &e) {
/

if(ErrorForm==NULL)
ErrorForm = new TErrorForm(Application);
ErrorForm->Memo1->Text = ADOQ->SQL->Text;
ErrorForm->ShowModal();
*/
}
}
void TDataModule1::exec(AnsiString sql,TADOQuery *ADOQ)
{
ADOQ->Close();
ADOQ->SQL->Clear();
ADOQ->SQL->Add(sql);
try
{
ADOQ->ExecSQL();
// Open方法只能用来执行SQL语言的查询语句(Select命令),并返回一个查询结果集。ExecSQL方法除了可执行Select语句外还可执行其它SQL语句(如Update、Insert、Delete等),此方法不返回执行的结果。用法: Query.ExecSQL
}
catch(Exception &e)
{

}
}
注意:在别的窗体使用DataModule时,别忘了在窗体添加DataModule的头文件!!!

2.数据库连接sql server–使用ADO面板中的ADOConnect
第一步:
BCB数据库构件用法的总结

第二步:
BCB数据库构件用法的总结

3.从数据库中查询数据并把取出的数据显示在视图中的实例:
sql = "select * from test ";
DataModule1->show(sql,DataModule1->MyQuery);

从数据库中取出某个特定需要使用的数据的实例:
DataModule1->MyQPub->FieldByName(“keyno”)->AsString
注意:取数据之前肯定需要先要查询数据数据,但是如果你的sql 是 "select * from test ";为了找一条数据把整个表都查出来太耗费资源了!!!正确的用法是单独查询
sql = "select * from test where keyno=601 ";之后再把数据取出来使用!!!

4.像2中如果只需要取下数据的一般都用DataModule的公共查询组件,但如果需要显示出视图中的,一般直接在窗体添加专门的组件用于查询。
eg:DBGird直接绑定一个ADOQuery1和DataSource1,DBGird的Events/DataSource绑定DataSource1
利用ADOQuery的SQL属性提前写入查询语句,然后在ADOQuery的 editor中右击添加添加Columns!!!在其的Field中选中添加的Columns在其对应的属性中修改中文字段, DBGird建立Columns时调出Editing框选择Columns的“Fielsname”可以直接显示中文

数据库数据显示视图除了DBGird,还有dxDBGird,cxDBGird
cxGrid数据集的绑定:
鼠标右击cxGrid1DBTableView1,选中Link to DataSource绑定数据集!!!!
cxGrid某个item的不同状态对应的不同类型的修改:
BCB数据库构件用法的总结

5.常常使用到的技巧:从数据库中动态生成conbobox中的item:

ckListen->Checked=true;
sql = " Select distinct JKAddress From [Key] ";
DataModule1->show(sql,DataModule1->ADOQFree);

ComboBox1->Items->Clear();
while(! DataModule1->ADOQFree->Eof)
{
ComboBox1->Items->Add(DataModule1->ADOQFree->FieldByName(“JKAddress”)->AsString);
DataModule1->ADOQFree->Next();
}

6.数据库中的数据用图像的视图显示:控件+多图形控件
TListItem ListItem;
int l,t;
l=0;
t=0;
ListViewItem->Items->Clear();
//取手牌信息
sql = “select keyno,keyinno,state from cg_record_key where jkaddress=’”+Ejkaddress->Text+"’ ";
DataModule1->show(sql,DataModule1->MyQFree); //先把需要的数据查询出来再提取
while(DataModule1->MyQFree->Eof==false)
{
ListItem=ListViewItem->Items->Add();
ListItem->Caption=DataModule1->MyQFree->FieldByName(“keyno”)->AsString;
ListItem->SubItems->Add(DataModule1->MyQFree->FieldByName(“keyinno”)->AsString);
ListItem->ImageIndex=DataModule1->MyQFree->FieldByName(“state”)->AsInteger;
ListItem->Left=l
68+10;
ListItem->Top=t*82+10;
l++;
if(l==10)
{
l=0;
t++;
}
DataModule1->MyQFree->Next();
}

相关文章:

  • 2021-04-22
  • 2021-05-27
  • 2021-10-10
  • 2022-12-23
  • 2021-12-15
  • 2022-12-23
猜你喜欢
  • 2021-07-23
  • 2021-07-11
  • 2021-06-04
  • 2022-01-13
  • 2021-11-06
  • 2021-06-08
  • 2021-08-05
相关资源
相似解决方案