Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ASP更新数据库,如果不存在则插入_Sql_Database_Csv_Asp Classic_Upsert - Fatal编程技术网

Sql ASP更新数据库,如果不存在则插入

Sql ASP更新数据库,如果不存在则插入,sql,database,csv,asp-classic,upsert,Sql,Database,Csv,Asp Classic,Upsert,我需要循环一个CSV,获取每一行的ID,然后循环数据库,将csvID与每个dbID进行比较。如果数据库中存在该ID,它将使用CSV中的相关信息更新记录 然而,我被困在一个无休止的循环中(从我所知道的),不知道如何摆脱它 选项显式 Server.ScriptTimeout=2147483647 dim conn、rs、updatedUser、UPDATEDATE、文件路径 自定义sql、csvConn、CONNCVSV、csv、sql dim dbID、dbSSN、dbLast、dbFirst、d

我需要循环一个CSV,获取每一行的ID,然后循环数据库,将csvID与每个dbID进行比较。如果数据库中存在该ID,它将使用CSV中的相关信息更新记录

然而,我被困在一个无休止的循环中(从我所知道的),不知道如何摆脱它

选项显式
Server.ScriptTimeout=2147483647
dim conn、rs、updatedUser、UPDATEDATE、文件路径
自定义sql、csvConn、CONNCVSV、csv、sql
dim dbID、dbSSN、dbLast、dbFirst、dbMiddle、dbGender、dbScl、dbCls
dim csvID、csvSSN、csvLast、csvFirst、CSVMidle、csvGender
尺寸csvScl、csvCls、csvGrd、csvHrm
updateuser=Request.Cookies(“UserN”)
updateDate=date()&“&time()
filePath=“\path\to\file”
'连接到Students.CSV
csvConn=“Provider=Microsoft.Jet.OLEDB.4.0;数据源=”&_
Server.MapPath(文件路径)&_
“扩展属性='text;HDR=no;FMT=Delimited'
设置connCSV=Server.CreateObject(“ADODB.Connection”)
CONNCCSV.Open csvConn
Set csv=Server.CreateObject(“ADODB.recordset”)
csv.open“SELECT*FROM Students.csv”,connsv
temp=csv.RecordCount
redim toAdd(温度)
'开始在Students.csv中循环
直到csv.eof为止
'获取Students.csv列值
请暂时忽略“替换”的内容
csvID=replace(替换(csv.fields(0),“”,“”,“”,“”,“”,“”)
csvSSN=replace(替换(csv.fields(1),“”,“”,“”,“”,“”,“”)
csvLast=replace(替换(csv.fields(2),“”,“”,“”,“”,“”)
csvFirst=replace(替换(csv.fields(3),“”,“”,“”,“”,“”)
csvMiddle=replace(替换(csv.fields(4),“”,“”,“”,“”,“”)
csvGender=replace(替换(csv.fields(5),“”,“”,“”,“”,“”)
csvScl=replace(替换(csv.fields(6),“”,“”,“”,“”,“”,“”)
csvGrd=replace(替换(csv.fields(7),“”,“”,“”,“”,“”)
csvHrm=replace(替换(csv.fields(8),“”,“”,“”,“”,“”)
'连接到数据库
set conn=Server.CreateObject(“ADODB.Connection”)
conn.Provider=“Microsoft.Jet.OLEDB.4.0”
连接打开“E:/path/to/file/database.mdb”
set rs=Server.CreateObject(“ADODB.Recordset”)
rs.打开“从tblStudent选择*”,康涅狄格州
'开始在TBL学生中循环
直到R.eof为止
'获取tblStudents.StudentID
dbID=rs.fields(“学生ID”)
dbSSN=rs.字段(“SSN”)
dbLast=rs.fields(“LastName”)
dbFirst=rs.fields(“FirstName”)
dbMiddle=rs.fields(“中间名”)
dbGender=rs.fields(“性别”)
dbScl=卢比字段(“学校”)
dbCls=rs.fields(“类”)
如果dbID=csvID,则
'如果dbID与csvID匹配,
'使用新的CSV数据更新tblStudents
sql=“更新tblStudent集合”&_
“主动class='Yes'和”&_
“SSN=”&csvSSN&“和”&_
“LastName=”&csvlast&“和”&_
“FirstName=”&csvFirst&“和”&_
“MiddleName=”&csvmidle&“和”&_
“性别=”&csvGender&“和”&_
“学校=”&csvScl&“和”&_
“GradeLvl=”&csvGrd&“和”&_
“HomeRoomID=”&csvHrm&“和”&_
“PrevClass1=”&dbCls&“和”&_
“LastUpdateUser=”&UpdateUser&“和”&_
“LastUpdateDate='”&UpdateDate&'”&_
“WHERE StudentID=“&dbID&;””
出错时继续下一步
conn.execute(sql)
其他的
“我不知道在这里该怎么办。。。
“我想创建一个动态数组:
'为未找到的每个ID添加到数组
"不过,我没有那么熟练。
“如果有人能帮我的话,
“我将不胜感激
如果结束
下一个
环
csv.movenext
环
'这是我需要执行的插入SQL,
但也不确切知道该放在哪里
sql=“插入到tblStudent(”&_
活动、学生ID、SSN、姓、名、中间名、性别、&_
学校,年级,家庭房间ID,LastUpdateUser,LastUpdateDate&_
)值(“”)&_
“'Yes','”&csvID&“,'”&csvSSN&“,”&csvLast&“,”&_
csvFirst&“,”&csvmidle&“,”&csvGender&“,”&_
csvScl&“,”&csvGrd&“,”&csvHrm&“,”&_
UpdateDate&_
"');"
出错时继续下一步
conn.execute(sql)
如果错误为0,则
响应.cookies(“更新”)=“否”
response.cookies(“更新”).Expires=dateadd(“s”,2,now())
响应。重定向(“步骤5.asp”)
其他的
响应.cookies(“更新”)=“是”
response.cookies(“更新”).Expires=dateadd(“s”,2,now())
响应。重定向(“步骤6.asp”)
如果结束
这甚至可能不是最好的方法,我也愿意接受这里的建议。但是,首先我需要做以下工作:循环CSV,如果数据库中存在csvID,则更新数据库,如果不存在,则插入csvID行信息

//更新 多亏了,我才能够让我的代码正常工作,在很大程度上:我被这段代码挂断了:

csvLast=replace(csv.fields(2),“,”)
csvFirst=replace(csv.fields(3),“,”)
如果csv.fields(4)为空,则
csvMiddle=replace(csv.fields(4),“,”)
埃尔斯
Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = "whateveryourconnectionstringis"
rs.Source = "SELECT * FROM Table WHERE ID = '" & intValue & ";"
rs.CursorType = 2
rs.CursorLocation = 3
rs.LockType = 3
rs.Open()

'If at this point we have no records, it doesnt exist so add it and any data all new records need'
If rs.BOF AND rs.EOF Then
    rs.AddNew
    rs("ID") = intValue
End If

    'Update the rest of the fields
rs("Field1") = Value1
rs("Field2") = Value2
rs("Field3") = Value3
rs.Update()

rs.Close()
Set rs = Nothing