Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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 server SQL Server使用VBScript插入错误的值_Sql Server_Csv_Vbscript - Fatal编程技术网

Sql server SQL Server使用VBScript插入错误的值

Sql server SQL Server使用VBScript插入错误的值,sql-server,csv,vbscript,Sql Server,Csv,Vbscript,我有一个从CSV上传项目的脚本。CSV有3列,数据库中有3列 代码(nvarchar 255) 名称(nvarchar 255) 价格(货币) 脚本如下 ' --- Connect to File.CSV csvConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &Server.MapPath("..\upload") &";Extended Properties='text;HDR=Yes;FMT=Delimi

我有一个从CSV上传项目的脚本。CSV有3列,数据库中有3列

代码(nvarchar 255)
名称(nvarchar 255)
价格(货币)

脚本如下

' --- Connect to File.CSV
csvConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" 
&Server.MapPath("..\upload") &";Extended 
Properties='text;HDR=Yes;FMT=Delimited';"
Set connCSV = Server.CreateObject("ADODB.Connection")
connCSV.Open csvConnStr


set csvCmd = Server.CreateObject("ADODB.Command")
csvCmd.ActiveConnection = connCSV
csvCmd.CommandType = 1
csvCmd.CommandText = "SELECT * FROM upload.csv"
set rsCsv = csvCmd.Execute

csvCode= rsCsv.fields.item(0)
csvName= rsCsv.fields.item(1)
csvPrice = rsCsv.fields.item(2)
注意-我已经通过csv提交了循环,因为我不认为这是我的问题的原因,但可以根据要求包括在内

set insertCmd = Server.CreateObject("ADODB.Command")
insertCmd.ActiveConnection = conn 
insertCmd.CommandType = 1
insertCmd.CommandText = "INSERT INTO tblProducts (code, name, price) VALUES (?,?,?)"
insertCmd.Parameters.append(
insertCmd.CreateParameter("@code",200,1,255,csvCode))
insertCmd.Parameters.append(
insertCmd.CreateParameter("@name",200,1,255,csvName))
insertCmd.Parameters.append(
insertCmd.CreateParameter("@price", 6, 1, , csvPrice))
insertCmd.Execute
我的CSV具有以下结构

Item Code, Item Name, Item Price
00001, First Item, 100
00002, Second Item, 100
脚本将很好地插入,但项目代码以字符“F”开头的情况除外

例如

Item Code, Item Name, Item Price
F0445, Item X, 200
将插入一条记录,但数据库中的代码为445

这仅适用于F,因此代码如

Item Code, Item Name, Item Price
G0445, Item Y, 200
FG0445, Item X, 200
很好。F是VBScript中的特殊字符吗?为什么它不能插入整个代码?

从注释中回答


我认为F以某种方式格式化了数据,所以通过使用单引号使值为'F0445'应该可以将varchar添加到数据库中?因此,结束sql应该是:INSERT-INTO-tblProducts(code,name,price)值('F0445','Item X',200),单引号告诉sql它是文本插入的


同样根据您上次的评论,将Excel中的列/单元格格式化为文本。

冷静点,尝试逐个查找原因。sql语句中的varchar周围是否有单引号?完成的sql语句在运行时是什么样子的?谢谢。您好@Sourcery,我在sql语句中的变量周围没有单引号。我打印了SQL语句,它将值作为收缩代码插入。我在csvCode=rsCsv.fields.item(0)之后添加了一个打印,这里csvCode=0445。读取正在删除前几个字符(好的,只有在以F开头时!)我认为F以某种方式格式化了数据,所以通过使用单引号,使值为“F0445”,应该可以将varchar添加到数据库中?因此,结束sql应该是:插入tblProducts(代码、名称、价格)值('F0445','Item X',200),单引号告诉sql它是文本插入的。感谢您的回复和时间。您是对的,F正在格式化数据。我在excel中打开了文档,它假设F是一个函数运算符,尽管我没有定义它!如果您想在@sourcery发布答案,我很乐意接受。