SqlCommand cmd = new SqlCommand();
SqlConnection con = new SqlConnection();
string checkRadioButton()
{
string rbdText;
if(RadioButton1.Checked)
{
rbdText = RadioButton1.Text;
}
else
{
rbdText = RadioButton2.Text;
}
return rbdText;
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand(" insert into Registration values(@Name, @Gender, @MobileNumber, @EmailID, @UserID, @Password, @Address, @Country)", con);
cmd.Parameters.AddWithValue("@Name", TextBox1.Text);
cmd.Parameters.AddWithValue("@Gender", checkRadioButton());
cmd.Parameters.AddWithValue("@MobileNumber", TextBox2.Text);
cmd.Parameters.AddWithValue("@EmailID", TextBox3.Text);
cmd.Parameters.AddWithValue("@UserID", TextBox5.Text);
cmd.Parameters.AddWithValue("@Password", TextBox6.Text);
cmd.Parameters.AddWithValue("@Address", TextBox8.Text);
cmd.Parameters.AddWithValue("@Country", DropDownList1.SelectedItem.Value);
cmd.ExecuteNonQuery();
con.Close();
Response.Redirect("Homepage2.aspx");
}
这是我的注册页面的aspx.cs文件。没有编译错误,但在执行Button1_Click
事件后,注册数据不会保存到数据库中。
答案 0 :(得分:1)
您需要在SQLConnection
构造函数中添加连接字符串。 connection string本身通常会保留在web.config
中。所以代码可能类似于:
var connectionString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Do your insert here;
}
答案 1 :(得分:0)
正如其他人所提到的,您的问题的答案是您缺少连接字符串作为SqlConnection
对象实例化的参数:
SqlConnection con = new SqlConnection("connection string goes here");
但是,我还建议您修改一些代码。
任何实现IDisposable
接口的类都需要正确处理。这意味着调用Dispose()
方法,或者将对象的实例化包装在using
块中(如果可能的话,我会强烈推荐这条路径,因为它更简单)。
因此,例如SqlConnection
实现了IDisposable
,所以我会改变这个:
SqlConnection con = new SqlConnection();
到此:
using (SqlConnection con = new SqlConnection())
{
// ...
}
您还需要对SqlCommand
进行这些更改。
try...catch
块用于可能引发异常的代码任何可能抛出异常的代码都应该包含在try...catch
块中。这样做可以防止您的应用程序在抛出异常时崩溃。可以在您不希望与代码无关的地方抛出异常。
以SqlConnection
为例。如果您的网络连接突然停止工作并且您的代码调用SqlConnection.Open()
,则会引发异常并且您的应用程序将崩溃。在try...catch
块中包含此行将阻止应用程序崩溃并允许您“正常”处理异常(通过记录错误并在可能的情况下继续运行应用程序)。
using (var connection = new SqlConnection("Server=SQLServerName;Integrated Security=True;"))
{
try
{
connection.Open()
}
catch (Exception ex)
{
// Do something with the exception
}
}
如果将SQL语句直接放在源代码中(通常称为“硬编码”),则必须重新编译并重新部署整个应用程序(如果该SQL语句将来必须更改)。
相反,您可以将SQL语句提取到存储过程或函数中,并从您的代码中调用它们。这样,当SQL语句需要更改时,您不需要重新编译和重新部署应用程序;只需更新存储过程/函数。
您的代码中还有一些部分可以重构为更简单,但这篇帖子已经远远超过我最初的预期,所以我会在这里停下来。