第六次上机实验要求
主题:Delphi数据库编程2(典型数据库程序架构知识点,TQuery的SQL动态语言编程)
1.启动屏
①新建一个窗体,可以取名为SplashForm (窗体名字),保存则可存为Splash.pas(单元文件命,保存时.pas可省略) ,窗体的BorderStyle属性设置为bsNone ②在工程文件(.dpr)中输入以下代码: Application.Initialize;
SplashForm := TSplashForm.Create(Application); //启动屏创建 SplashForm.Show; SplashForm.Update;
Application.CreateForm(TMainForm, MainForm); //创建主窗体 SplashForm.ProgressBar1.Position := 10; Sleep(500);
Application.CreateForm(TLoginForm, LoginForm); //创建用户验证窗体 SplashForm.ProgressBar1.Position := 20; Sleep(500);
try
MainForm.ADOConnection1.Connected := true; except
MessageBox(Application.Handle, '网络数据库连接不上'+#13+'请检查网络连接状况','数
据库连接出错',MB_OK+MB_ICONERROR); Application.Terminate; end;
SplashForm.Close; //关闭启动屏窗体
SplashForm.Free; //释放启动屏窗体所占的内存
Application.Run;
注意:如果启动屏一闪而过,可在主窗体MainForm的OnCreate事件中加入Sleep(3000);来进行延迟
2.用户登陆窗体
①新建一个窗体,取名为LoginForm
②在主窗体的OnShow事件中输入以下代码
LoginForm.ShowModal;
if LoginForm.ModalResult = mrCancel then Application.Terminate;
③在LoginForm中防置两个按钮,一个写LoginForm.ModalResult := mrOK; (确定按钮,如果验证密码成功,自己用if语句来写)
一个写LoginForm.ModalResult := mrCancel; (取消按钮)
3.数据库配置
①配置ODBC数据源(以access数据库为例)
“控制面板” -> ”管理工具” -> ”数据源ODBC” -> 点击“添加” -> 选择“Driver to Microsoft Access(*.mdb)”,输入数据源名称,选择数据库所在的路径并确定. ②进行BDE配置
“开始” -> “程序” -> “Borland Delphi 7” -> “BDE Administrator” -> 找到你建立的数据源别名,点击它,出现”SQLQRYMODE”选择”LOCAL”,点击”关闭”并保存
③在程序主窗体MainForm上放置一个Database1,其DatabaseName属性设置为ODBC中的数据库别名,LoginPrompt设置为false,Connected属性设为true
小窍门:可以在工程文件的SplashForm.Close前面输入 try
MainForm.Database1.Connected := true; except
MessageBox(Application.Handle, '数据库连接不上'+#13+'请检查','数据库连接出错
',MB_OK+MB_ICONERROR); Application.Terminate; end;
作用是预先检查数据库连接状况,如果出错,则退出程序!
4.在主窗体上画出相应的界面,如果需要打开更多窗口,则新建相应的窗体,并输入代码 Form1.ShowModal; (以Form1为例,具体名字可以不同)
注意:在implementation后面应该添加需引用的单元文件名 如uses Unit1; (Form1窗体保存为Unit1.pas)
5.充分利用Table、Query、DBGrid、DataSource等控件和SQL标准语言进行对数据库的操作.
以下是Delphi中的SQL语言对数据库的操作(ODBC) ① 添加
Query1.SQL.Clear;
Query1.SQL.Add('Insert Into Score (Num, Name, WU, SX)'); Query1.SQL.Add('Values (:sNum, :sName, :sWU, :sSX)');
Query1.ParamByName('sNum').AsString := Edit1.Text; Query1.ParamByName('sName').AsString := Edit2.Text;
Query1.ParamByName('sWU').AsString := Edit3.Text; Query1.ParamByName('sSX').AsString := Edit4.Text;
Query1.ExecSQL; ② 删除
Query1.SQL.Clear;
Query1.SQL.Add('Delete From Score Where num = :snum'); Query1.ParamByName('snum').AsString := Edit1.Text; Query1.ExecSQL;
③ 修改
Query1.SQL.Clear;
Query1.SQL.Add('Update Score');
Query1.SQL.Add(' Set Num = :sNum, Name = :sName, WU = :sWU, SX = :sSX'); Query1.SQL.Add(' Where Num = :sNum2');
Query1.ParamByName('sNum').AsString := Edit1.Text; Query1.ParamByName('sName').AsString := Edit2.Text; Query1.ParamByName('sWU').AsString := Edit3.Text; Query1.ParamByName('sSX').AsString := Edit4.Text; Query1.ParamByName('sNum2').AsString := Edit5.Text; Query1.ExecSQL;
④ 查询
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add('Select * From Score Where num = :snum'); Query2.ParamByName('snum').AsString := Edit1.Text; Query2.Open
以下是Delphi中的SQL语言对数据库的操作(ADO) ⑤ 添加
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Insert Into Table1 (Num, Name, WU, SX)'); ADOQuery1.SQL.Add('Values (:sNum, :sName, :sWU, :sSX)');
ADOQuery1.Parameters.ParamByName('sNum').Value := Edit1.Text; ADOQuery1.Parameters.ParamByName('sName').Value := Edit2.Text;
ADOQuery1.Parameters.ParamByName('sWU').Value := StrToFloat(Edit3.Text); ADOQuery1.Parameters.ParamByName('sSX').Value := StrToFloat(Edit4.Text);
ADOQuery1.ExecSQL;
showmessage('ok'); ⑥ 删除
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Delete From Table1 Where num = :snum'); ADOQuery1.Parameters.ParamByName('sNum').Value := Edit1.Text; ADOQuery1.ExecSQL; showmessage('ok');
⑦ 修改
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Update Table1');
ADOQuery1.SQL.Add(' Set Num = :sNum, Name = :sName, WU = :sWU, SX = :sSX'); ADOQuery1.SQL.Add(' Where Num = :sNum2');
ADOQuery1.Parameters.ParamByName('sNum').Value := Edit1.Text; ADOQuery1.Parameters.ParamByName('sName').Value := Edit2.Text;
ADOQuery1.Parameters.ParamByName('sWU').Value := StrToFloat(Edit3.Text); ADOQuery1.Parameters.ParamByName('sSX').Value := StrToFloat(Edit4.Text); ADOQuery1.Parameters.ParamByName('sNum2').Value := Edit5.Text; ADOQuery1.ExecSQL;
showmessage('ok'); ⑧ 查询
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
//ADOQuery2.SQL.Add('Select * From Table1 Where num = :snum'); //ADOQuery2.Parameters.ParamByName('sNum').Value := Edit1.Text;
ADOQuery2.SQL.Add('Select * From Table1 Where SX > :sSX'); ADOQuery2.Parameters.ParamByName('sSX').Value := Edit4.Text;
ADOQuery2.Open

