2017-09-08 21 views
0

SQL Server 2012にデータを記録するVB.netプログラムを作成しています。この段階では、データベースに新しい行を作成しようとしています。主キーは自動的にN + 1行を作成し、行を作成するには新しいシリアル番号を入力します。これは先日働いていましたが、それ以外のデータを編集するためにフォームにローをロードすることはできませんでした。VB.netとSQL ServerのINSERTチェックボックスの結果

とにかく、新しい行を作成したときに、すべてのテキストボックスに空白を、すべての日付ボックスに今日の日付を、すべてのチェックボックスに 'false'を返します。私はnullをチェックするコードも追加しました。以下は、私のコードのチェックボックスに結果を挿入するためのコードですが、私はエラー

付近に正しくない構文を取得「=」

:誰もが見ることができるのであれば

Private Sub btnAddNewSerial_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click, btnAddNewSerial.Click 
    Try 
     con.ConnectionString = (frmAdmin.lblDBConnection.Text & frmAdmin.txtDBPW.Text & frmAdmin.lblDBConnection2.Text) 
     con.Open() 

     cmd.Connection = con 
     cmd.CommandText = "INSERT INTO SLE1000DB (SK2SoakMainPCB) " & _ 
"VALUES (@SK2SoakMainPCB)” 
     cmd.Parameters.AddWithValue("@SK2SoakMainPCB", SqlDbType.Bit).Value = FrmSLE1000.chkSoakInteruptionsMainPCB.Checked 

     cmd.ExecuteNonQuery() 
     cmd.Parameters.Clear() 

     con.Close() 

     MsgBox("Data updated") 
    Catch ex As Exception 
     MessageBox.Show("Error while inserting record on table..." & ex.Message, "Insert Records") 
    Finally 
     con.Close() 
    End Try 

    Me.Hide() 
    frmSelect.Show() 
End Sub 

構文エラーの原因は何ですか?また、チェックボックスに誤った結果が返ってくるような、わかりやすい方法を教えてくれるかもしれません(現時点では正しい結果が返ってきて、それは私がまだ考えていることです)私の目標を達成するための総合的な方法よろしくお願いいたします。私のVB.netとSQL Serverの知識はすべて本からのものなので、残念ながらかなり制限されています!

ここに表示されているコードは単なるスニペットですが、実際にはデータを渡しているカラムがたくさんありますが、構文エラーの原因となっているチェックボックスは "="コードのこのビットのどこにいても、このセクションのステップを踏んで、それに追いついてしまいます。

とにかくお世話になりました!

+0

*デバッグを試しましたか?エラーの発生場所を確認しましたか? *実際のエラーメッセージ*を確認しましたか?あなたは 'AddWithValue'を呼び出し、**列挙メンバ**を** value **として渡しています。列挙は整数として格納されます。次に、**整数**プロパティの値として*ブール値*を設定しようとします。 –

+1

コマンドテキストの最後の二重引用符は実際には二重引用符ではないことに気がつきましたか? – Steve

+0

それはあなたが 'AddWithValue()'を使用する方法ではなく、2番目のパラメータは値であると考えられます。しかし、あなたが実際に問題ではないとにかくそれを直ちに上書きするので、ただの観察です。 – Crowcoder

答えて

0
Private Sub btnAddNewSerial_Click(sender As System.Object, e As 
System.EventArgs) Handles btnAdd.Click, btnAddNewSerial.Click 
    Try 

     con.ConnectionString = (frmAdmin.lblDBConnection.Text & 
frmAdmin.txtDBPW.Text & frmAdmin.lblDBConnection2.Text) 
     con.Open() 
     cmd.Connection = con 
     cmd.CommandText = "INSERT INTO SLE1000DB (SK2SoakMainPCB) VALUES (@SK2SoakMainPCB)" 
     cmd.Parameters.AddWithValue("@SK2SoakMainPCB",FrmSLE1000.chkSoakInteruptionsMainPCB.Checked) 
      cmd.ExecuteNonQuery() 
      cmd.Parameters.Clear() 
     con.Close() 
     MsgBox("Data updated") 
    Catch ex As Exception 
     MessageBox.Show("Error while inserting record on table..." & ex.Message, "Insert Records") 
    Finally 
    con.Close() 
    End Try 

    Me.Hide() 
    frmSelect.Show() 
    End Sub 

値のあるaddパラメータが正しくありませんでした。詳細情報:https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue(v=vs.110).aspx

これが役に立ちます

+0

スマートな見積もりはまだそこにありますが、その呼び出しによって構文エラーが発生したと思われる理由は何ですか?それは値として**整数**を渡しました。次に、その値をブール値に設定しようとしました**。これで構文エラーが発生することはありません。これにより、キャストまたはランタイムエラーが発生します。 –

+0

cmd.CommandText = "INSERT INTO SLE1000DB(SK2SoakMainPCB)VALUES(@ SK2SoakMainPCB)"最後の引用符のスペルが間違っています。 データベース内の値が常に真であることについては、パラメータが間違っていたようです.addwithvalueは2つの引数をとります:sqlパラメータの名前と実際の値 – sapi

+0

スティーブが* other * non-answer: 'And誰かが繰り返すことのない簡単なタイプミスがあるときは、回答を投稿しないでください。コメントは十分です。あなたのコメントをお寄せいただきありがとうございます。 –

関連する問題