找回密码
 加入
搜索
查看: 1112|回复: 1

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

[复制链接]
发表于 2009-12-3 14:14:52 | 显示全部楼层 |阅读模式
本帖最后由 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[12] = $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[11]&"' and 终止IP>='"&$_Virus_array[11]&"'"
                $RS2.Open ($_Bureau_Sql)
                $_Virus_array[12] = $RS_Bur.Fields(0).value
                $RS2.close
                $_Lc_Title = $_Lc_Title&",分局名称,采集时间"
                $_Ins_str = ""
                $_Virus_array[13]=_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

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

 楼主| 发表于 2009-12-3 14:54:31 | 显示全部楼层
已经找到问题,是自己一个循环初值写错......惭愧..
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2025-1-12 12:26 , Processed in 0.078432 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表