2017-03-08 52 views
0

このエラーが発生し続ける:System.Data.SqlClient.SqlException: 'PRIMARY KEY制約' PK__tmp_ms_x__3214EC0750F0A8B2 'の違反。オブジェクト 'dbo.Table'に重複キーを挿入できません。重複するキー値は()です。指定された値の列名または数がテーブル定義と一致しません。何か案は?

ステートメントが終了しました。 '

私は何が間違っているのか分かりませんが、誰かが手がかりを持っていますか?

using System; 
 
using System.Collections.Generic; 
 
using System.ComponentModel; 
 
using System.Data; 
 
using System.Drawing; 
 
using System.Linq; 
 
using System.Text; 
 
using System.Threading.Tasks; 
 
using System.Windows.Forms; 
 
using System.Data.SqlClient; 
 

 
namespace FBLA_Project_1 
 
{ 
 
    public partial class Form2 : Form 
 
    { 
 
     SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\LUCY\Documents\testerfile.mdf;Integrated Security=True;Connect Timeout=30"); 
 
     public Form2() 
 
     { 
 
      InitializeComponent(); 
 
     } 
 

 
     private void label3_Click(object sender, EventArgs e) 
 
     { 
 
      
 

 
     } 
 
      
 
     private void Form2_Load(object sender, EventArgs e) 
 
     { 
 
      con.Open(); 
 
      SqlCommand cmd = con.CreateCommand(); 
 
      cmd.CommandType = CommandType.Text; 
 
      cmd.CommandText= "insert into [Table] (Id, Name, EmployeeID, Sunday) values('" + textBox2.Text+"','"+textBox4.Text+"','"+textBox1.Text+"','"+textBox3.Text+"')"; 
 
      cmd.ExecuteNonQuery(); 
 
      con.Close(); 
 
      disp_data(); 
 
      MessageBox.Show("Data has been put in succefully "); 
 
     } 
 

 
     public void disp_data() 
 
     { 
 
      con.Open(); 
 
      SqlCommand cmd = con.CreateCommand(); 
 
      cmd.CommandType = CommandType.Text; 
 
      cmd.CommandText = "select * from table "; 
 
      cmd.ExecuteNonQuery(); 
 
      DataTable dt = new DataTable(); 
 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
 
      da.Fill(dt); 
 
      dataGridView1.DataSource = dt; 
 
      con.Close(); 
 
     } 
 
    } 
 
}

ライン33私はエラーを取得する場所の周りにあります。何時間も何度も手を触れて、同じ場所にいるのは本当に面倒です。

+1

SQLを作成するために連結しないでください。 SQLパラメータは常に使用してください。あなたの質問に正しいタグを使用してください:それはVB.NETではありません。あなたのタイトルを入力するときに提供される重複を無視しないでください。 – Plutonix

答えて

0

あなたのinsertqueryの値の数は、テーブルの作成時に定義されたカラムの数と一致しません。 カラム名を明示的に割り当てる必要があります(例:カラム名がcol1、col2、 col3、col4)

cmd.CommandText="insert into [Table] (col1, col2, col3, col4) 
values('"+textBox2.Text+"','"+textBox4.Text+"','"+textBox1.Text+"','"+textBox3.Text+"')"; 
+0

私はあなたが言ったことをしました、しかし、私はより多くのエラーに遭遇しました。 System.Data.SqlClient.SqlException: 'PRIMARY KEY制約' PK__tmp_ms_x__3214EC0750F0A8B2 'に違反しています。オブジェクト 'dbo.Table'に重複キーを挿入できません。重複するキー値は()です。 編集されたコードのビットは次のとおりです。cmd.CommandType = CommandType.Text; "+ textBox2.Text +" '、+ "textBox1.Text +"'、 '+ textBox1.Text + "'、+ textBox1.Text +" ' "+ textBox3.Text +" ') "; cmd.ExecuteNonQuery(); –

+0

このエラーは、挿入が正しく機能し、重複した値を挿入しようとしていることを意味します。 挿入しようとしている値とテーブルにある値を確認する必要があります。 – scaisEdge

関連する問題