无法将数据保存到数据库中

本文关键字:数据库 保存 数据 | 更新日期: 2023-09-27 17:57:52

我正在使用运行时SQL查询将一些数据插入数据库,但在此之前我要检查是否存在任何记录。以下是我的代码

    protected void btnSignUp_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
        try
        {
            using (SqlConnection con = new SqlConnection(cs))
            {
                string strgender = "";
                if (Rb_Male.Checked)
                    strgender = "Male";
                else if (Rb_Female.Checked)
                    strgender = "Female";
                else
                {
                    lblMsg.Text = "Please Select Gender";
                    lblMsg.ForeColor = Color.Red;
                }
                con.Open();
                SqlCommand cmdcheck = new SqlCommand();
                cmdcheck.CommandText = "select * from [Users] where E_Mail='" + @tb_Email.Text + "'";
                cmdcheck.Connection = con;
                //cmd.Parameters.AddWithValue("@em", tb_Email.Text);
                SqlDataReader drd = cmdcheck.ExecuteReader();
                if (drd.Read())
                {
                    lblEmail.Visible = true;
                    lblEmail.Text = "Email Already Exsits";
                    lblMsg.ForeColor = Color.Red;
                    lblMsg.Text = "Account not created!!!";
                }
                else
                {
                    string strcmd = "insert into Users values ('" + @tbName.Text + "','" + @tbSName.Text + "','" + @tb_Email.Text + "','" + @tb_Pass.Text + "','" + @DropDownDay.Text + "','" + @DropDownMonth.Text + "','" + @DropDownYear.Text + "','"+ strgender +"')";
                    SqlCommand cmd = new SqlCommand(strcmd, con);
                    cmd.ExecuteNonQuery();
                    lblMsg.Text = "Account created sussecfully";
                    lblMsg.ForeColor = Color.Green;
                    clearallfields();
                }

            }
        }
        catch
        {
            lblMsg.ForeColor = Color.Red;
            lblMsg.Text = "Account not created!!!";

        }

    }
    else
    {
        lblMsg.ForeColor = Color.Red;
        lblMsg.Text = " * Enter Required Field(s)";
    }
}

如果没有与特定电子邮件相关的记录,则下面的部分工作良好,但如果没有记录,则转到其他部分并在executeonquery()之后;它进入的捕获部分

if (drd.Read())
            {
                lblEmail.Visible = true;
                lblEmail.Text = "Email Already Exsits";
                lblMsg.ForeColor = Color.Red;
                lblMsg.Text = "Account not created!!!";
            }
            else
            {
                string strcmd = "insert into Users values ('" + @tbName.Text + "','" + @tbSName.Text + "','" + @tb_Email.Text + "','" + @tb_Pass.Text + "','" + @DropDownDay.Text + "','" + @DropDownMonth.Text + "','" + @DropDownYear.Text + "','"+ strgender +"')";
                SqlCommand cmd = new SqlCommand(strcmd, con);
                cmd.ExecuteNonQuery();
                lblMsg.Text = "Account created sussecfully";
                lblMsg.ForeColor = Color.Green;
                clearallfields();
            }

        }
    }
    catch
    {
        lblMsg.ForeColor = Color.Red;
        lblMsg.Text = "Account not created!!!";

    }

请帮我解决这个问题。。

无法将数据保存到数据库中

insert语句没有指定要添加到Users表中的列。在以下行上放置断点:
string strcmd = "insert into Users values ('" + @tbName.Text + "','" + @tbSName.Text + "','" + @tb_Email.Text + "','" + @tb_Pass.Text + "','" + @DropDownDay.Text + "','" + @DropDownMonth.Text + "','" + @DropDownYear.Text + "','"+ strgender +"')";

strcmd的值,并在SQLServerManagementStudio中执行它。你会发现它很可能会失败。修复插入语句直到它在SQL中工作,然后将其复制到ASP中。NET web应用程序。

同时更改您的捕获块并检查您得到的异常:

catch(Exception ex)
{
    System.Diagnostics.Debugger.Break();
}