CSVからアイテムをアップロードするスクリプトがあります。 CSVには3列あり、データベースには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ファイルをループしているommitedそれは私の問題の原因だとは思わないが、要求に応じて含めることができます。
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
レコードを挿入しますが、データベース内のだろうが、そのような
Item Code, Item Name, Item Price
G0445, Item Y, 200
FG0445, Item X, 200
などのコードが挿入されますので、コード= 445
これは、唯一のFである必要がありますかなり大丈夫。 FはVBScriptの特殊文字ですか?どのようにコード全体を挿入しないのでしょうか?
落ち着いて、原因を1つずつ見つけようとしてください。 –
SQL文のvarcharsの周りに一重引用符を使用していますか?完成したSQL文は、実行するとどのように見えますか? – Sourcery
ありがとうreds。こんにちは@ソーセージ、私はSQLステートメントの変数の周りに単一引用符を持っていません。私はSQLステートメントを印刷し、その値を縮小コードとして挿入しています。私はcsvCode = rsCsv.fields.item(0)とここではcsvCode = 0445の後にプリントを追加しました。最初の数文字は読み込み中です(F!で始まるときだけです)。 – ochhii