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

时间:2016-07-20 09:09:30

标签: c# mysql asp.net database twitter-bootstrap

我使用运行时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)";
    }
}

如果没有与特定电子邮件相关联的记录,但是如果没有记录,它将转到其他部分并且在executiontenonquery()之后,波纹管部分运行良好。它会进入捕获部分

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!!!";


    }

请帮助我解决这个问题..

1 个答案:

答案 0 :(得分:-1)

您的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的值并在SQL Server Management Studio中执行它。您将看到它很可能失败。修复插入语句,然后在SQL中工作,然后将其复制到ASP.NET Web应用程序中。

同时更改您的catch块并检查您获得的例外:

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