下面三个过程,分别是对数据库作读出和写入操作从数据库读出
procedure TMainForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
TreeNodeText:String;
sSql:string;
begin
TreeNodeText:=TreeView1.Selected.Text; try
sSql:='select * from Soft'; With DM.ADOQuery1 do
begin
Close;
Sql.Clear;
Sql.Add(sSql);
Open;
while not EOF do
begin
Name:=fieldByname('SoftName').value; //name是全局变量
end;
end;
except
showmessage('写入SoftInfo失败');
end;
end;
向数据库插入一个记录1
procedure TAddForm1.btIntoDBClick1(Sender: TObject);
sSql:String;
begin
try
//添加到数据库
With DM.ADOQuery1 do
begin
Close;
Sql.Clear;
sSql:='insert into SoftDB.Soft (SoftName) values ('''+EditName.Text+''')';
Sql.Add(sSql);
ExecSQL;
MainForm1.TreeView1Change(Sender,MainForm1.TreeView1.Selected);
end;
except
ShowMessage('添加失败');
end;
end;这样向数据库插入一个记录2
procedure TAddForm1.btIntoDBClick2(Sender: TObject);
sSql:String;
begin
try
//添加到数据库
With DM.ADOQuery1 do
begin
Close;
Sql.Clear;
sSql:='insert into SoftDB.Soft (SoftName) values ('''+EditName.Text+''')';
Sql.Add(sSql);
ExecSQL; DM.ADOConnection1.Close;
DM.ADOConnection1.Open;
MainForm1.TreeView1Change(Sender,MainForm1.TreeView1.Selected);
end;
except
ShowMessage('添加失败');
end;
end;现在在一个OnButtonClick事件中调用如果这样调用
procedure TMainForm1.ButtonClickSender: TObject);
begin
btIntoDBClick1(Sender);
end;却找不到刚插入的这条记录,而这样
procedure TMainForm1.ButtonClickSender: TObject);
begin
btIntoDBClick2(Sender);
end;
就可以了
但我考虑到频繁打开关闭连接,效率可能变得比较低,请问这是什么原因,能不能通过别的方法实现,或者这样大概会有多大的效率损失
procedure TMainForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
TreeNodeText:String;
sSql:string;
begin
TreeNodeText:=TreeView1.Selected.Text; try
sSql:='select * from Soft'; With DM.ADOQuery1 do
begin
Close;
Sql.Clear;
Sql.Add(sSql);
Open;
while not EOF do
begin
Name:=fieldByname('SoftName').value; //name是全局变量
end;
end;
except
showmessage('写入SoftInfo失败');
end;
end;
向数据库插入一个记录1
procedure TAddForm1.btIntoDBClick1(Sender: TObject);
sSql:String;
begin
try
//添加到数据库
With DM.ADOQuery1 do
begin
Close;
Sql.Clear;
sSql:='insert into SoftDB.Soft (SoftName) values ('''+EditName.Text+''')';
Sql.Add(sSql);
ExecSQL;
MainForm1.TreeView1Change(Sender,MainForm1.TreeView1.Selected);
end;
except
ShowMessage('添加失败');
end;
end;这样向数据库插入一个记录2
procedure TAddForm1.btIntoDBClick2(Sender: TObject);
sSql:String;
begin
try
//添加到数据库
With DM.ADOQuery1 do
begin
Close;
Sql.Clear;
sSql:='insert into SoftDB.Soft (SoftName) values ('''+EditName.Text+''')';
Sql.Add(sSql);
ExecSQL; DM.ADOConnection1.Close;
DM.ADOConnection1.Open;
MainForm1.TreeView1Change(Sender,MainForm1.TreeView1.Selected);
end;
except
ShowMessage('添加失败');
end;
end;现在在一个OnButtonClick事件中调用如果这样调用
procedure TMainForm1.ButtonClickSender: TObject);
begin
btIntoDBClick1(Sender);
end;却找不到刚插入的这条记录,而这样
procedure TMainForm1.ButtonClickSender: TObject);
begin
btIntoDBClick2(Sender);
end;
就可以了
但我考虑到频繁打开关闭连接,效率可能变得比较低,请问这是什么原因,能不能通过别的方法实现,或者这样大概会有多大的效率损失
解决方案 »
- 可用分没了,怎么赚?
- TAction(ActionList1.Actions[k]).Enabled:=false; 在dll会出错,请问要怎么改才好
- 今年过的真tmd的郁闷,尤其是下办年,哎,散分找点运气回来
- 请问用spcomm控件如何发送integer数组,另外^表示什么意思?
- 一个简单但是捆饶我的问题!
- 4个表的内容按对应关系在一个QuickRep中显示?
- 怎样给树型控件绘制背景图
- 没自己做过控件,现在需要这样的控件,请高手帮忙。
- 怎么把INI中的内容读到memo中呢
- 有strPCopy问题
- 如何遍历窗体中的所有控件,并遍历每个控件的所有属性中是否含有string类型的属性,如果有则将这个控件的名称和这个属性的名称写入一个me
- 这样的SQL语句怎么写?
DM.ADOConnection1.Open;
实际上就是refrsh了一下
DM.ADOQuery1.Open;
这样可能好些?
DM.ADOConnection1.Open; 完全一样