2014-04-17 121 views
0

我在SQL Server 2008中創建了一個8列表。我將數據輸入到表的第1列中,剩餘的列允許空值。無法將數據添加到數據庫中

我想添加數據到其餘6列,根據輸入的前2列中的數據,但我無法添加數據。將另外6列放入「允許空值」導致此問題。

如果是,是否有解決方案?

謝謝。

string str = (@"Data Source=.\;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True;"); 

try 
{ 
    String sql = "(insert into usn (firstname, lastname, password, address, bloodgrp, contactnum, email) values (@st1, @st2, @st3, @st4, @st5, @st6, @st7) WHERE usn = '" + omd + "')"; 

    SqlConnection conn = new SqlConnection(str); 
    conn.Open(); 

    SqlCommand cmd = new SqlCommand(sql, conn); 
    { 
     cmd.Parameters.AddWithValue("@st1", TextBox1.Text); 
     cmd.Parameters.AddWithValue("@st2", TextBox2.Text); 
     cmd.Parameters.AddWithValue("@st3", TextBox3.Text); 
     cmd.Parameters.AddWithValue("@st4", TextBox10.Text); 
     cmd.Parameters.AddWithValue("@st5", TextBox6.Text); 
     cmd.Parameters.AddWithValue("@st6", TextBox7.Text); 
     cmd.Parameters.AddWithValue("@st7", TextBox8.Text); 

     cmd.ExecuteNonQuery(); 
     Response.Redirect("accountcreated.aspx"); 

     conn.Close(); 
    } 
+0

你是如何添加數據?你能向我們展示你的查詢嗎?或者解釋你的方法? –

+0

數據庫的前2列包括與regnum相關聯的客戶的名稱和regnum。我正在使用的其他字段爲這些客戶創建帳戶。所以指定用戶的regnum已經存儲在前兩列中。基於這種方法,我需要將數據添加到剩餘的6個字段。 – Partha

+1

'INSERT'語句不能有'WHERE'子句.....你想**插入**那一行 - 你不能這樣做,這取決於一個WHERE子句。 –

回答

0

如果你已經在你的表中的記錄,你需要使用UPDATE,不INSERT

所以,您的查詢應該是這樣

UPDATE usn 
SET firstname = @st1, 
    lastname = @st2, 
    password = @st3, 
    address = @st4, 
    bloodgrp = @st5, 
    contactnum = @st6, 
    email = @st7 
WHERE usn = ... 

不能INSERT成一列,您使用INSERT只把數據插入到表(創建記錄)。

所以,你的SQL字符串應該看起來像這樣。

String sql = "(UPDATE usn SET firstname = @st1, lastname = @st2, password = @st3, address = @st4, bloodgrp = @st5, contactnum = @st6, email = @st7 WHERE usn = '" + omd + "')"; 
+0

先生,我試過這個。但它還沒有工作。將其他列設置爲允許空值,同時創建表導致此問題。它沒有顯示任何錯誤,並且當數據更新到表中時,頁面不會導航到下一個錯誤。我正在檢查的WHERE條件(omd)包含字符串值,usn包含varchar。這可能是問題嗎? – Partha