我在写一个数据从EXCEL导入SQL数据时碰到一个问题就是导几列是没问题。如下。
procedure Tfrm_inport.Button2Click(Sender: TObject);
var a,b,c,sql:string;
i:integer;
begin
while not adoquery1.Eof do
begin
a:=adoquery1.fieldbyname('发送时间').AsString;
b:=adoquery1.fieldbyname('接收手机').AsString;
c:=adoquery1.fieldbyname('短信内容').AsString;
if adoquery1.fieldbyname('接收手机').AsString='' then exit;
sql:='insert into send_record values('''+a+''','''+b+''','''+c+''')';
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add(sql);
adoquery2.ExecSQL;
adoquery1.Next;
end;
showmessage('导入完毕'); 但是如果这样,字段一多的话SQL会很长,会写死人,有没有更好的方法去写。最好举个例子,好像有人用TSTRINGS类去做类似的这样的功能。但小弟不知道怎么做,请前辈们指点一下吧。
procedure Tfrm_inport.Button2Click(Sender: TObject);
var a,b,c,sql:string;
i:integer;
begin
while not adoquery1.Eof do
begin
a:=adoquery1.fieldbyname('发送时间').AsString;
b:=adoquery1.fieldbyname('接收手机').AsString;
c:=adoquery1.fieldbyname('短信内容').AsString;
if adoquery1.fieldbyname('接收手机').AsString='' then exit;
sql:='insert into send_record values('''+a+''','''+b+''','''+c+''')';
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add(sql);
adoquery2.ExecSQL;
adoquery1.Next;
end;
showmessage('导入完毕'); 但是如果这样,字段一多的话SQL会很长,会写死人,有没有更好的方法去写。最好举个例子,好像有人用TSTRINGS类去做类似的这样的功能。但小弟不知道怎么做,请前辈们指点一下吧。
解决方案 »
- COM中的PopupMenu弹出问题
- 请问在delphi6里面怎么生成exe文件才能在所有的机器上运行!
- DBGrid的异常怎么捕捉呢?急!!!
- 为什么我在Delphi7中不能调用ConnectToPrinterDlg函数,总是说没有声明,而网上很多人都可以用呢?
- 请教各位:我的delphi8安装问题
- 这个网站:http://www.softwww.com 中的一款聊天软件,要出售源代码,我准备买一套,大家认为这样的软件的源代码值多少钱
- 有做過ado/mts/com+第9章例子的請進!
- ConnectionOpen(FreateFile())? 错误?
- 刚毕业答辩完!来送分!(机房实验室管理系统)
- 谁能给我一个TFileStream , 读写的例子,多谢了!
- delphi中如何判断数据库中字段是否允许空值及获取字段默认值?
- 主从表SQL带where子句的问题:没有按主表进行“筛选”
procedure Tfrm_inport.Button2Click(Sender: TObject);
begin
while not adoquery1.Eof do
begin
adoquery2.Close;
adoquery2.SQL.Text := ' insert into send_record values(:a,:b,:c)';
adoquery2.parameters.parambyname('a').value := doquery1.fieldbyname('发送时间').AsString;
adoquery2.parameters.parambyname('b').value := doquery1.fieldbyname('短信内容').AsString;
adoquery2.parameters.parambyname('c').value := doquery1.fieldbyname('接收手机').AsString;
adoquery2.ExecSQL;
adoquery1.Next;
end;
end;
var
vFieldList := TStringList;
vFields: string;
i: integer;
begin
vFieldList := TStringlist.create;
try
vFieldList.LoadFromFile('a.txt');
while not adoquery1.Eof do
begin
for i := 0 to vFieldList.count - 1 do
if i < vFieldlist.count - 1
vFields := vFields + QuotedStr(vFieldList.string[i]) + ','
else
vFields := vFields + QuotedStr(vFieldList.string[i]);
sql:='insert into send_record values('+ vFields + ')';
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add(sql);
adoquery2.ExecSQL;
adoquery1.Next;
end;
finally
vFieldlist.free;
end; 没有调试,你自己调试跟踪看看!
http://www.99net.net/study/program/delphi/1085477174.html