C# 如果插入数据未检查,则检查数据未插入。

C# 如果插入数据未检查,则检查数据未插入。,c#,C#,我做错了什么请帮忙 如果检查数据不插入如果插入数据不检查 如果有人帮忙,工作就会帮你解决这个问题 protected void Submit_Click(object sender, EventArgs e) { //string strCon = "Server=yourServer;Database=BuspassDb;User Id=Sa;Password=india;"; SqlConnection sqlConn

我做错了什么请帮忙

如果检查数据不插入如果插入数据不检查

如果有人帮忙,工作就会帮你解决这个问题

    protected void Submit_Click(object sender, EventArgs e)
        {
            //string strCon = "Server=yourServer;Database=BuspassDb;User Id=Sa;Password=india;";
            SqlConnection sqlConn = new SqlConnection(strCon);
            SqlCommand cmd = new SqlCommand("select * from Console where Text = @TextTmp", sqlConn);
            //cmd.CommandText = "CheckIfStringExists";
            cmd.Parameters.AddWithValue("@TextTmp", txtString.Text);
            //SqlParameter param = new SqlParameter();
            //param.ParameterName = "@TextTmp";
            //param.Value = txtString.Text;
            //cmd.Parameters.Add(param);
            try
            {
                sqlConn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                //reader = cmd.ExecuteReader();
                if (reader.HasRows)
                {
                    reader.Read();
                    txtString.Text = (reader["Text"].ToString());
                    lblMessage.Text = txtString.Text + ".... is already exists";
                }
                else 

                    lblMessage.Text = txtString.Text + "... is not exists";
                    txtString.Text = "";
                    sqlConn.Close();


                    //SqlConnection sqlCon = new SqlConnection(strCon);
                    //SqlCommand cmdd = new SqlCommand();
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.CommandText = "InsertConsole2";
                    cmd.Connection = sqlConn;
                    //cmd.Parameters.AddWithValue("@TextTmp", txtString.Text);
                    sqlConn.Open();
                    cmd.ExecuteScalar();
                    lblMessage.Text = txtString.Text + "....is Inserted";
                    }
                    catch (Exception ex)
            {
                lblMessage.Text = ex.Message;
            }
It shows the following error on the page 
我正在用C#写,那么它工作不正常。

您需要指定

可以将其作为第二个参数传递给:

也可以直接设置属性:

new SqlCommand("select * from Console where Text = @TextTmp", sqlConn);
换行

cmd.Connection = sqlConn;
同样错误的参数名称也更改赋值参数的语句

 SqlCommand cmd = new SqlCommand("select * from Console where Text = @TextTmp",sqlConn );

只调用executereader一次

您需要在SqlCommand中指定SqlConnection。请参见此示例:

 param.ParameterName = "@TextTmp"; 

查看更多信息。

此代码有几个问题,包括但不限于:

SqlCommand cmd = new SqlCommand("select * from Console where Text = @TextTmp",sqlConn );
  • 您没有分配
    SqlCommand
    Connection
    属性
  • 您使用了错误的参数名称(
    @StringTmp
    而不是
    @TextTmp
  • 您正在调用
    ExecuteReader()
    两次
  • 您没有正确处理对象。使用
    块或自己调用
    Dispose()
此外,您还可以有效地将
txtString.Text
分配给自身


编辑:代码示例

protected void Submit_Click(object sender, EventArgs e)
{
    string strCon = "Server=yourServer;Database=yourDB;User Id=Username;Password=Password;";
    SqlConnection sqlConn = new SqlConnection(strCon);
    SqlCommand cmd = new SqlCommand("select * from Console where Text = @TextTmp", sqlConn);
    cmd.Parameters.AddWithValue("@TextTmp", txtString.Text);

    try
    {
        sqlConn.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        reader = cmd.ExecuteReader();
        if (reader.HasRows)
        {
            reader.Read();
            txtString.Text = reader["Text"].ToString();
            lblMessage.Text = txtString.Text + ": String is already exists";
        }
        else
        {
            lblMessage.Text = txtString.Text + ": No data";
             txtString.Text = "";
        }
    }
    catch (Exception ex)
    {
        lblMessage.Text = ex.Message;
    }

只是提醒一下。。。“它不起作用”作为一个标题并不合适。未来的程序员将如何知道您的问题可能适用于他们?我已经相应地编辑了标题,因为我认为这正是您真正想问的。可能的重复已经有一个与此命令相关联的打开的DataReader,必须先关闭它。这是说这个错误之后,我在这个声明中添加了sqlconn,而你还没有这样做。如果没有数据,你能告诉我如何插入数据库到同一个代码中吗?我不理解你的意思。您想让我创建一个插入查询吗?不,我没有从这个代码字符串中存储的插入过程,我需要插入那个
protected void Submit_Click(object sender, EventArgs e)
{
    string strCon = "Server=yourServer;Database=yourDB;User Id=Username;Password=Password;";
    SqlConnection sqlConn = new SqlConnection(strCon);
    SqlCommand cmd = new SqlCommand("select * from Console where Text = @TextTmp", sqlConn);
    cmd.Parameters.AddWithValue("@TextTmp", txtString.Text);

    try
    {
        sqlConn.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        reader = cmd.ExecuteReader();
        if (reader.HasRows)
        {
            reader.Read();
            txtString.Text = reader["Text"].ToString();
            lblMessage.Text = txtString.Text + ": String is already exists";
        }
        else
        {
            lblMessage.Text = txtString.Text + ": No data";
             txtString.Text = "";
        }
    }
    catch (Exception ex)
    {
        lblMessage.Text = ex.Message;
    }
    protected void Submit_Click(object sender, EventArgs e)
    {
        using (SqlConnection sqlConn = new SqlConnection(strCon))
        using (SqlCommand cmd = new SqlCommand("select * from Console where Text = @TextTmp", sqlConn))
        {
            cmd.Parameters.AddWithValue("@TextTmp", txtString.Text);

            try
            {
                sqlConn.Open();
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        reader.Read();
                        txtString.Text = reader["Text"].ToString(); // Why?
                        lblMessage.Text = txtString.Text + "String is already exists";
                    }
                    else
                    {
                        lblMessage.Text = txtString.Text + "No data";
                        txtString.Text = "";
                    }
                }
            }
            catch (Exception ex)
            {
                lblMessage.Text = ex.Message;
            }
        }
    }