wwant 发表于 2009-12-3 14:14:52

插入ADO数据库时,总是在插入第二条数据时报错

本帖最后由 wwant 于 2009-12-3 14:57 编辑

自己写错了代码,和数据库无关,已修改状态....请管理人员关闭
===============================
很好,终于要问问题了 ,代码在下面,不是很完整,因为和ACCESS数据库在一起,不太容易发完整到可以运行的程度
我解释一下:以下代码标记了#50 的行就是报错的行 {$addfld.Execute($_F_Sql)}
该句的SQL 和数据库并没有错,因为循环的第一次是可以插入数据的,但循环的第二次就会报错。(既然第一次没问题,我认为语句本身没有问题)
以下语句再简化就是这样
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&$_GC_Dbname) ;连接数据库
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS2 = ObjCreate("ADODB.Recordset")
$RS2.ActiveConnection = $addfld_bur
$RS.Open ($_E_Sql)
      While not $RS.eof
                              $RS2.Open ($_Bureau_Sql)
                $_Virus_array = $RS_Bur.Fields(0).value
                $RS2.close
                              $addfld.Execute($_F_Sql)
                              $addfld.Execute($_F_Sql)
                              $addfld.Execute($_F_Sql)
                              $addfld.Execute($_F_Sql)
                              $addfld.close
                              $RS.movenext
      WEnd
      $RS.Close
$addfld.Close
以上操作中,我创建了两个表 $RS$RS2 但在$addfld循环第二次插入时报错,即使我加入了绿色的那些行,还是在循环的第二次报SQL的错
如果加入蓝色的行(这肯定是不可以的...)报错依旧....
暂时只有这些信息,那位能提供线索!...   
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&$_GC_Dbname) ;连接数据库
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS2 = ObjCreate("ADODB.Recordset")
$RS2.ActiveConnection = $addfld_bur

   
$file = FileOpen("20091202.CSV", 0)      ;合并后使用 $_Savefile 替换文件名
While 1
      $line = FileReadLine($file)
      If @error = -1 Then ExitLoop
      $line =StringTrimRight($line,1)
      $_D_Sql=Insert Into T1 (Art_Tid,Art_Title,Art_Auth,Art_Date,Art_Read,Art_Reply,Art_Url)"&" Values ("&$line&")"
      $addfld.Execute($_D_Sql)
Wend
FileClose($file)
      $_Lc_Title = $_Lc_Title&",IP"
      $_E_Sql = "Select Art_Tid,Art_Title,Art_Auth,Art_Date,Art_Read,Art_Reply,Art_Url From Search"
      $RS.Open ($_E_Sql)
      While not $RS.eof
                For $i = 0 to 11
                        $_Virus_array[$i] = $RS.Fields($i).value
                Next
                $_Bureau_Sql = "Select 名称 From "&$_GC_Bureau&" where 起始IP<='"&$_Virus_array&"' and 终止IP>='"&$_Virus_array&"'"
                $RS2.Open ($_Bureau_Sql)
                $_Virus_array = $RS_Bur.Fields(0).value
                $RS2.close
                $_Lc_Title = $_Lc_Title&",分局名称,采集时间"
                $_Ins_str = ""
                $_Virus_array=_NowCalcDate()
                For $i = 0 to 13
                        $_Ins_str = $_Ins_str&",'"&$_Virus_array[$i]&"'"
                Next
                $_Ins_str = StringMid ($_Ins_str,2)
                $_F_Sql="Insert Into "&$_GC_Data&" ("&$_Lc_Title&")"&" Values ("&$_Ins_str&")"
#49                MsgBox(4096,"----",$_F_Sql)
#50                $addfld.Execute($_F_Sql)
#51      $RS.movenext
      WEnd
      $RS.Close

$addfld.Close

wwant 发表于 2009-12-3 14:54:31

已经找到问题,是自己一个循环初值写错......惭愧..
页: [1]
查看完整版本: 插入ADO数据库时,总是在插入第二条数据时报错