2016-11-05 69 views
0
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 crudwithlogin 
{ 
    public partial class student_registration : Form 
    { 
     SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Android\Documents\Data.mdf;Integrated Security=True;Connect Timeout=30"); 

     public student_registration() 
     { 
      InitializeComponent(); 
     } 

     private void student_registration_Load(object sender, EventArgs e) 
     { 
      label1.Text = "You are logged in as "+((Form)this.MdiParent).Controls["label1"].Text; 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      conn.Open(); 
      SqlCommand cmd = conn.CreateCommand(); 
      cmd.CommandType = CommandType.Text; 
      cmd.CommandText = "insert into student values ('" 
                + textBox1.Text 
                + "','" 
                + textBox2.Text 
                + "''" 
                + dateTimePicker2.Value.ToString() 
                + "','" 
                + textBox4.Text 
                + "','" 
                + comboBox2.Text 
                + "','" 
                + textBox6.Text 
                + "','" 
                + dateTimePicker1.Value.ToString() 
                + "')"; 
      cmd.ExecuteNonQuery(); 
      conn.Close(); 
      MessageBox.Show("Data Added Successfully. "); 
     } 
    } 
} 

專家您好,我創建一個使用C#的Windows窗體應用程序,我想 數據插入到數據庫中,但我得到的值的誤差和列不匹配,即使我正在爲正確的屬性輸入正確的值。C#.NET的WinForms數據插入錯誤

我有8個屬性(ID與自動增量),併爲剩餘的7列我輸入7個值,但我得到錯誤值不匹配。

請幫我解決這個問題。我重視

錯誤我得到的是這裏顯示的代碼和問題截圖:

enter image description here

數據庫模式截圖在這裏

enter image description here

+0

請讓我知道如果你的問題還沒有解決 – Plycoder

+1

可能重複的[sql server:列名或提供的值數量不匹配表定義](http://stackoverflow.com/questions/20372361/sql- server-column-name-or-number-of-supplied-values-does-not-match-table-defini) – Shell

+0

[SQL注入警報](http://msdn.microsoft.com/zh-cn/library/ms161953 %28v = sql.105%29.aspx) - 你應該不**連接你的SQL語句 - 使用**參數化查詢**來代替以避免SQL注入 –

回答

1
('" + textBox1.Text + "','" + textBox2.Text + "''" + dateTimePicker2.Value.ToString() + "','" 
//missed , ------------------------------------^ 

在未來也使用Command.Parameters,你將避免這樣的問題!您也將受到保護SqlInjection。這裏舉例說明如何定義你的參數。

SqlCommand cmd = conn.CreateCommand(); 
cmd.CommandType = CommandType.Text; 
cmd.CommandText = @"insert into TableNameFromDB values (@ID, @Title)"; 
cmd.Parameters.AddWithValue("@ID", yourIDValue); 
cmd.Parameters.AddWithValue("@Title", yourTitleValue); 
cmd.ExecuteNonQuery(); 
conn.Close(); 

也不要在您的應用程序中共享一個連接,使用多個連接。連接池是你的朋友。檢查什麼是使用塊,並用它來自動處理您的IDisposable對象(例如:SqlConnection)。

+0

我會寫'yourIDValue'的地方嗎? textbox1.text? –

0

仔細看你的插入查詢有一個,(昏迷)失蹤。請你正確地修改你的查詢,如下所示:

"insert into student values ('" + textBox1.Text + "','" + textBox2.Text + "','" + dateTimePicker2.Value.ToString() + "','" + textBox4.Text + "','" + comboBox2.Text + "','" + textBox6.Text + "','" + dateTimePicker1.Value.ToString() + "')"; 

如果還不行,那麼可能是數據庫結構和相應值的問題。

+0

請讓我知道如果它沒有工作 – Plycoder

+0

謝謝它的工作 –

+0

Welcome @ Precious Pari – Plycoder