2011-06-15 6 views
0

私は今かなりの時間のために、この問題が生じていますし、解決策を見つけ出すことができないと、SQLの列に整数..データ型int

を保存する方法私は、SQLクエリの結果として取得商品コードを持っています。私は別のテーブルに挿入するときに、データベース内のProductIDのデータ型が今

 Dim scheduleid As Integer 

     cmd.CommandText = "Insert into DeploymentSchedules (scheduleName) values('Schedule');select Scope_Identity();" 
     scheduleid = cmd.ExecuteScalar() 

int型です...

 cmd.CommandText = "Insert into 
    locationsSchedule(LocationName,length,width,height,floor,walls,permIeter,scheduleid) 
    values('" + strRoomName + "','" + txtLength.Text + "','" + txtWidth.Text + "','" + 
    txtHeight.Text + "','" + wallSTring + "','" + floorString + "','" + perimeterStrin + 
    "','" + scheduleid + "')" 
     cmd.ExecuteScalar() 

私はそれを知っているエラー

 Conversion from string "Insert into locationsSchedule(Lo" to type 'Double' 
     is not valid. 

を持っていますそれが働いている製品IDを削除するときに整数と関係があります。助けてください。

THank you

+0

このコードはSQLインジェクション攻撃に対して脆弱です。 –

答えて

0

あなたのscheduleidの周りには'があり、intを文字列にキャストします。それらを削除し、すべてが(多分あなたはまた、他の列のためにこれをしなければならない)問題ないはずです。ところで

"'," + scheduleid + ")" 

:エヴァーSQL-Injectionのことを聞きましたか?

+1

ソニーピクチャーズはそうではありませんでした! ) – CResults

0

はあなたのためのエラーを取り除く

cmd.ExecuteNonQuery() 

cmd.ExecuteScalar() 

から変更していますか?

最初の例では、最近作成した行の一意のIDを返します。 2番目のクエリではそうではありません。ここに示すように変更するか、クエリから整数を返します。

ああ、およびSQL文字列を構築する他の方法を見て(parametrised問い合わせを!)

+0

cmd.Parameters.Add( "@ schedule"、SqlDbType.BigInt、scheduleid)このエラーはexecutinクエリで発生します パラメータ化されたクエリ '(@schedule bigint)locationsSchedule(LocationName、len' expectsパラメータ '@schedule'は提供されませんでした – ConfusedCoder

+0

cmd.Parameters.AddWithValue( "@ schedule"、scheduleid) – CResults

関連する問題