2016-07-11 7 views
0

これは私のデータセットに行を挿入しようとしているコードです。 sqlConnectionが開かれるまで正しく実行されます。しかし、nonQueryの実行は 'System.Data.SqlClient.SqlException'をスローします。私は接続文字列に何か問題があると考えて、app./configファイルからコピーしました。何が間違っているのか分かりません。また、私はパラメータ化されたSQLクエリを使用する必要があることを知っている、私は後でそれを実装します。vb.netのmicrosoft SQLサーバーを使用して、実行時にデータセットに値を挿入するには

Dim sqlConnection1 As New System.Data.SqlClient.SqlConnection("Data Source=(localdb)\MSSQLLocalD;Initial Catalog=ContactInfo;Integrated Security=True;Pooling=False") 
    Dim cmd As New SqlClient.SqlCommand 
    cmd.CommandType = CommandType.Text 
    cmd.CommandText = "INSERT INTO Table (ID, FirstName, MiddleName, LastName, Type, Telephone, Extension, Email) VALUES (" + row.ID.ToString + "," + "'" + row.FirstName + "'" + "," + "'" + row.MiddleName + "'" + "," + "'" + row.LastName + "'" + "," + "'" + row.Type + "'" + "," + row.Telephone.ToString + "," + "'" + row.Extension + "'" + "," + "'" + row.Email + "')" 
    cmd.Connection = sqlConnection1 
    sqlConnection1.Open() 
    cmd.ExecuteNonQuery() 
    sqlConnection1.Close() 
+2

完全エラー例外の投稿 –

+0

私がここに見る最初の大きな問題は、あなたのコードがSQLインジェクションに広く開いていることです。あなたは、パラメータ化されたクエリについて読んで理解し、使い始める必要があります。 "私は後でそれを修正する"の罠に陥ってはいけません。現実はあなたが実際にそれをしないということです。初めて正しく行う方法を学ぶだけです。一度学んだら、もう時間はかかりません。あなたが私たちに推測しなければならないエラーメッセージを教えない限り、手元の問題については.... –

+0

プログラミングの最初の法則:_ "後で" _ - equals - "は決して起こらないだろう"と私は実装します。値のいくつかに '' '文字が含まれていると' SqlException'が出ます - 再び 'SqlParameter'を使い、あなたの時間を節約します。また、 'vb.net'の文字列を連結するには'& '文字を使用します。あなたのコードファイルの最初の行に 'Option Strict On'と書いておけば、コンパイラがエラーを見つけるのを助けます。 – Fabio

答えて

0

まず、あなたがあなたのテーブル「テーブル」という名前を付けので、あなたの本当のテーブル名に変更し、それが と使用のSQLパラメータを実行してくださいできることを考えてはいけません!

第2に、ExecuteNonQueryの結果を変数に取得し、レコードが書き込まれたかどうかをチェックできます。

関連する問題