StrConn:='Provider=MSDASQL.1;DSN=MyODBC;UID=s42334125db0;PWD=ashfre6zfki3wk1im;DESCRIPTION=My_ODBC_5_1;SERVER=161.1.0.71;DATABASE=s427gb5db0;PORT=3306;Initial Catalog=s445125db0'; oConn:= TAdoConnection.Create(nil); try oConn.ConnectionString:=StrConn; oConn.LoginPrompt:=false; oConn.Connected:=True; //创建放循环外面,只需要TAdoConnection就可以了 for i := 0 to MyStrList.Count - 1 do begin ............... oConn.Excute('INSERT INTO table1 (x1,x2,x3,x4,x5,x6,x7) values ('+atmp[6]+','+atmp[4]+','+atmp[0]+','+Quotedstr(atmp[1])+','+Quotedstr(atmp[3])+','+atmp[5]+','+Quotedstr(atmp[2])+')');//直接执行sql语句
oConn:= TAdoConnection.Create(nil);
try
oConn.ConnectionString:=StrConn;
oConn.LoginPrompt:=false;
oConn.Connected:=True;
//创建放循环外面,只需要TAdoConnection就可以了
for i := 0 to MyStrList.Count - 1 do
begin
...............
oConn.Excute('INSERT INTO table1 (x1,x2,x3,x4,x5,x6,x7) values ('+atmp[6]+','+atmp[4]+','+atmp[0]+','+Quotedstr(atmp[1])+','+Quotedstr(atmp[3])+','+atmp[5]+','+Quotedstr(atmp[2])+')');//直接执行sql语句
end;
finally
oConn.Connected:=false;
oConn.free;
end;这样试试
oConn.Execute
因为是刚建的空表呀,目前只插入已知的唯一性数据纪录。录入完后,以后可能要判断Update/insert不知有没有更好的效率的方法呀 ... 我基本不懂这些东西,刚学不久,就是为了做个东西。如果有更好的插入方法,指导指导呀 .. 数据纪录大概500W左右..数据都是在网络上采集的。
insert ...select 来批量插入 ? 我要插入的数据全部是从网站上网页上动态截取出来的,能用insert ... select 吗?(刚google了一下才知道有insert...select这东西,汗)
在update 后跟 where?? 是的呀,我要更新某条指定纪录的字段值呀,我试了下,能执行呀,更好的方法是什么呢?
________________________________________________
另外我再问几个数据库方面基础问题:
帖中提到的那段线程内插入代码是控制成单线程顺序执行的,请问能不能不控制线程而让所有已经开启的线程同时插入或更新数据库呢(当然,这时我要把那写本地文本的代码去掉)?这样会带会什么其它问题吗?如何影响用户查询数据库速度吗(所有采集的数据仅供用户查询)?
而且频繁创建query,放到外边,创建一次