0
我有一個腳本上傳CSV項目。數據庫中有3列CSV和3列。SQL Server插入錯誤的值與VBScript
代碼(爲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中的特殊字符嗎?它怎麼會不會插入整個代碼?
請保持冷靜,並嘗試逐一找出原因。 –
你在sql語句中的varchars周圍是否有單引號?完成的sql語句在運行時如何顯示? – Sourcery
謝謝紅人。 Hi @Sourcery,我沒有在sql語句中的變量周圍使用單引號。我打印出SQL語句,並將值作爲縮小的代碼插入。我在csvCode = rsCsv.fields.item(0)和這裏csvCode = 0445之後添加了一個打印。讀取的是刪除前幾個字符(當然,只有當以F開頭時) – ochhii