asp.net - 尝试只插入一个数据单元格

时间:2011-12-20 15:27:51

标签: asp.net sql-server database

我将查询字符串传递给我的加载页面(ID) 然后尝试选择该行的列(状态),使其最终只有一个单元格。

我的目标是在包含一些文本的页面中取一些标签(不是文本框),并将其放在“状态”单元格中。

这是我的代码:

  

this.conn = new SqlConnection(ConnString);               conn.Open();               string idIndex = Request.QueryString [“ID”];               string sqlquery1 =“INSERT INTO Movies(Status)VALUES(@Status)”;               string sqlquery2 =“SELECT FROM FROM FROM WHERE ID =”+ idIndex;

        cmd = new SqlCommand(sqlquery2, conn);
        adapter = new SqlDataAdapter(sqlquery2, conn);
        dt = new DataTable();
        adapter.Fill(dt);
        string data = "";

        foreach (DataRow dataRow in dt.Rows)
        {
            data = dataRow["Status"].ToString();
        }

        if (data == "")
        {
            string username = UserNameOrGuest.Text;
            cmd = new SqlCommand(sqlquery1, conn);
            cmd.Parameters.AddWithValue("Status", username);
            ErrorLabel.Text = "Movie rental succeeded!";
            cmd.ExecuteNonQuery();

        }
        else
        {
            ErrorLabel.Text = "The movie is already rented by somebody else.";
        }
    }

我得到一个例外:

“无法将值NULL插入列'Ganere',表'Movie.dbo.Movies';列不允许空值.INSERT失败。 声明已经终止。“

(“Ganere”是表格中的另一栏,我不希望它通过。)

帮助者的谢谢!

1 个答案:

答案 0 :(得分:2)

这不是桌子的工作原理。插入记录时,该记录需要满足表的数据完整性标准。在这种特殊情况下,它听起来像表有一个必需的列。 (它甚至可能包含更多必需的列,而这只是您在查询中遇到的第一个列。)

此时你的选择是:

  1. 同时在该列中插入一个值,可以是虚拟/默认值,也可以是真实的。
  2. 更改表格以允许该列中的null
  3. 如果未提供该列,则更改该表以使该列具有默认值。