如何在从文本框插入数据之前检查列值是否为null

时间:2013-11-20 10:53:36

标签: c# asp.net ado.net

我正在尝试将数据从文本框插入到sql数据库中,但我想检查该行是否为空,然后插入新值,否则在if else条件下使用sqlcommands值更新行。

以下是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;


public partial class CM : System.Web.UI.Page
{
    DataSet ds = new DataSet();
    SqlDataAdapter da;
    SqlCommand cmd;
    //DataTable dt;
    SqlConnection con = new SqlConnection("server =consulting76\\SQLEXPRESS; database = msdb; Integrated Security=True");

    protected void Page_Load(object sender, EventArgs e)
    {
        da = new SqlDataAdapter();
        //("Select * from NOTESMAKER", con);
        //da.Fill(ds, "NOTESMAKER");
        //dt = ds.Tables["NOTESMAKER"];
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        con.Open();
        if (DBNull.Value != null)
        {
            cmd = new SqlCommand("Insert into NOTESMAKER(NOTESMAKER) Values(@text1)",con);
            cmd.Parameters.Add(new SqlParameter("@text1", SqlDbType.NText)).Value = TextBox1.Text;
            da.InsertCommand = cmd;
            cmd.ExecuteNonQuery();
        }
        else
        {
            cmd = new SqlCommand("Update NOTESMAKER set NOTESMAKER = @text1)",con);
            cmd.Parameters.Add(new SqlParameter("@text1", SqlDbType.NText)).Value = TextBox1.Text;
            da.UpdateCommand = cmd;
            cmd.ExecuteNonQuery();
        }
        con.Close();
    }

}

2 个答案:

答案 0 :(得分:0)

你可以这样做。 ExecuteNonQuery()返回受影响的行数,因此如果insert返回0,则表示没有要更新的内容。因此,您需要插入一行。

cmd = new SqlCommand("Update NOTESMAKER set NOTESMAKER = @text1)",con);
cmd.Parameters.Add(new SqlParameter("@text1", SqlDbType.NText)).Value = TextBox1.Text;
int affectedRows = cmd.ExecuteNonQuery();

if (affectedRows == 0)
{
    cmd = new SqlCommand("Insert into NOTESMAKER(NOTESMAKER) Values(@text1)",con);
    cmd.Parameters.Add(new SqlParameter("@text1", SqlDbType.NText)).Value = TextBox1.Text;
    cmd.ExecuteNonQuery();
}

答案 1 :(得分:0)

如果您不知道如何触发选择查询,请查看here

从tablename中选择*,其中columnName不为null

从您的查询eg

填写sqldataadapter

如果数据集计数为零,那么您可以继续进行插入操作,否则更新。

if (ds.table[0].rows.count==0)//insert
        {

        }
        else// update
        }