2017-01-24 16 views
0

私はusers name,email、およびcityという簡単なフォームを持っています。私はデータベースとテーブルを作成しました。フィールドはid,name,emailcityです。コードを実行すると、エラーや例外は発生しませんが、挿入されたデータをテーブルに表示することはできません。以下は私のコードですSQLデータベースにフォームデータを挿入できません

SqlConnection con = 
    new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=F:\\Database1.mdf;Integrated Security=True"); 
con.Open(); 
SqlCommand cmd = 
    new SqlCommand("insert into tbl_insert values (" + Convert.ToInt32(txtId.Text) + "," + "'" + txtName.Text + "'" + "," + "'" + txtEmail.Text + "'" + "," + "'" + txtboxCity.Text + "'" + ")", con); 
cmd.ExecuteNonQuery(); 
con.Close(); 

私は自分のデータベースのスクリーンショットを添付しています。 データベースの設計:

enter image description here

これは私が私のコードを実行した後に取得した出力です。保存されたヌル値を持つ 出力:

enter image description here

+0

ない場合は、列idはオートナンバー

である疑いがあるこの

con.Open(); SqlCommand cmd = new SqlCommand(@"insert into tbl_insert values(@name,@email,@add)", con); cmd.Parameters.AddWithValue("@name", txtname.Text); cmd.Parameters.AddWithValue("@email", txtemail.Text); cmd.Parameters.AddWithValue("@add", txtadd.Text); cmd.ExecuteNonQuery(); con.Close(); 

をお試しくださいクエリ? –

+0

私はあなたが持っている問題についてはあまりよく分かりませんが、SqlParameterのhttps://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter(vに頭を浮かべておきたいだけです= vs.110).aspxあなたが書いたコードはSQLインジェクションの影響を非常に受けやすいので、このプロジェクトは単に練習/楽しみ以外のものになる場合はSqlParameterを追加することをお勧めします – Ben

+0

@これは実行中にエラーが出ないプログラム –

答えて

1

これを実行するときにエラーを取得している私は、クエリに別のパラメータを追加し、cmd.Parameters

+0

'id'列がIdentityの場合、彼はエラーを出すはずですが、彼はすでに言及しています:*私はエラーや例外*に遭遇しません。 –

+0

同じ問題が続きました...エラーデバッグではデータが正しく追加されていますが、テーブルには表示されません –

3
あなたはいつも SQL Injectionを避け、引用符の問題からRIDを取得するために parameterized queriesを使用する必要があり

:直接のタイプを指定し、Valueプロパティがもっとある使用していますが

SqlCommand cmd = new SqlCommand("insert into tbl_insert values (@id,@name,@Email,@City)"); 
cmd.Parameters.AddWithValue("@id", Convert.ToInt32(txtId.Text)); 
cmd.Parameters.AddWithValue("@name", txtName.Text); 
cmd.Parameters.AddWithValue("@Email", txtEmail.Text); 
cmd.Parameters.AddWithValue("@City", txtboxCity.Text); 

AddWithValueより:

cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = txtName.Text; 

Can we stop using AddWithValue() already?

関連する問題