SQL Server 使用 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=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

插入一条记录,但在数据库中将具有 Code = 445

这仅适用于 F,因此诸如

Item Code, Item Name, Item Price
G0445, Item Y, 200
FG0445, Item X, 200

会插入得很好。F 是 VBScript 中的特殊字符吗?为什么它不会插入整个代码?

从评论中回答。

我认为 F 以某种方式格式化数据,因此通过使用单引号使值为"F0445">

应该可以向数据库添加 varchar? 所以最终的SQL应该是: 插入到tbl产品(代码,名称,价格(值("F0445","项目X",200(,单引号告诉sql它是文本插入的。

同样从您的上一条评论中,将 Excel 中的列/单元格格式化为文本。

最新更新