2014-04-17 77 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