我使用运行时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!!!";
}
请帮助我解决这个问题..
答案 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();
}