2012-07-17 55 views
1

我在這裏問了一個問題。爲什麼我的數據無法插入到我的數據庫中?我已經在SQL Server中創建了一個表。這是我的代碼行供您參考。無法在數據庫中插入數據

protected void Button2_Click(object sender, EventArgs e) 
{ 
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString); 
    SqlCommand cmd = new SqlCommand("Insert into CarTab(Brand,Model,Plate,Color,Service) Values (@brand,@model,@plate,@color,@year,@service)",conn); 

    cmd.CommandType = CommandType.Text; 
    cmd.Parameters.AddWithValue("@brand", Label1.Text); 
    cmd.Parameters.AddWithValue("@model", Label2.Text); 
    cmd.Parameters.AddWithValue("@plate", Label3.Text); 
    cmd.Parameters.AddWithValue("@color", Label4.Text); 
    cmd.Parameters.AddWithValue("@year", Label5.Text); 
    cmd.Parameters.AddWithValue("@service", Label6.Text); 

    conn.Open(); 
    cmd.ExecuteNonQuery(); 
} 

我的代碼有什麼問題嗎?請幫助我。我被困在這裏。謝謝。

+1

請始終顯示錯誤消息,如果有的話。 – 2012-07-17 07:47:33

+0

列數和參數不同 – 2012-07-17 07:47:45

+0

在你的'cmd.ExecuteNonQuery()'周圍放置一個'try {...} catch(Exception e){..}',看看你在插入時是否有任何異常。另外:請告訴我們您的連接字符串到您的數據庫 – 2012-07-17 07:59:03

回答

8

它看起來像你缺少你的命令語句Year

SqlCommand cmd = new SqlCommand(
"Insert into CarTab(Brand,Model,Plate,Color,Year,Service) 
    Values (@brand,@model,@plate,@color,@year,@service)", 
conn); 

您提供6個參數,但只有5列。

您是否收到錯誤消息?通常情況下,會有一些錯誤信息和一些信息;它通常看起來像這樣:

INSERT語句中的列數少於VALUES子句中指定的值 。 VALUES子句中的值數量必須爲 與INSERT語句中指定的列數相匹配。

編輯。

如果你仍然有問題,接下來要做的是看看實際的錯誤信息。讓我們稍微重構代碼:

using(SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString)) 
{ 
    using(SqlCommand cmd = new SqlCommand("Insert into CarTab(Brand,Model,Plate,Color,Service) Values (@brand,@model,@plate,@color,@year,@service)",conn)) 
    { 

     cmd.CommandType = CommandType.Text; 
     cmd.Parameters.AddWithValue("@brand", Label1.Text); 
     cmd.Parameters.AddWithValue("@model", Label2.Text); 
     cmd.Parameters.AddWithValue("@plate", Label3.Text); 
     cmd.Parameters.AddWithValue("@color", Label4.Text); 
     cmd.Parameters.AddWithValue("@year", Label5.Text); 
     cmd.Parameters.AddWithValue("@service", Label6.Text); 

     conn.Open(); 
     try 
     { 
      cmd.ExecuteNonQuery(); 
     } 
     catch(Exception e) 
     { 
      string errorMessage = e.Message; 
      //Set a label on the client to see the error message, or pause in the debugger and examine the property here. 
      //throw; 
     } 
    } 
} 

如果您看到沒有錯誤可言,這就是困擾了我最初,那麼它實際上可能是因爲你的事件處理程序未連接起來;有時候,設計師將取消事件處理程序的連接,這意味着您的點擊和實際的代碼會失去聯繫並永遠不會運行。

檢查您有:

Button2.Click += Button2_Click; 

InitializeComponent或在構造函數或負載事件。

+1

偉大的工作破折號:-) – Sunny 2012-07-17 07:47:12

+0

謝謝你注意到它。我已經糾正了它,但仍然無法插入:( – Stuck 2012-07-17 07:50:24

+0

沒有錯誤,這就是爲什麼我無法弄清自己爲什麼我的數據沒有插入到標籤頁中 – Stuck 2012-07-17 07:54:51

0

你的SQL查詢中缺少它的年柱:

INSERT INTO CarTab(Brand, Model, Plate, Color, Year, Service) 
相關問題