using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; public partial class Default3 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click1(object sender, EventArgs e) { string connstr = @"Data Source=.;Initial Catalog=stu; Integrated Security=True"; SqlConnection conn = new SqlConnection(connstr); string strSQL = "INSERT INTO UserInfo(sid,sno,sname,sex,age,gpa) VALUES('" + s1.Text + "','" + s2.Text + "','" + s3.Text + "','" + s4.Text + "','" + s5.Text + "','" + s6.Text + "')"; // string strSQL = "DELETE FROM UserInfo WHERE ; //string strSQL = "UPDATE UserInfoTable SET UPassword ='"+tbx_password.Text+"' WHERE // LoginID='"+tbx_name.Text+'"; SqlCommand cmd = new SqlCommand(strSQL,conn); cmd.ExecuteNonQuery(); try { conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); GridView1.DataSource = dr; GridView1.DataBind(); dr.Close(); } catch { } finally { conn.Close(); } } }请优化这段代码
时间: 2024-02-01 14:04:23 浏览: 143
ASP.NET中的无刷新验证码的开发(完整代码)
好的,下面是我对你的代码的优化建议:
1. 避免使用字符串拼接 SQL 语句,这样容易引入 SQL 注入风险。可以使用参数化查询来代替,这样可以有效避免 SQL 注入攻击。
2. 在执行 SQL 语句前打开连接,并在使用完毕后立即关闭连接。可以使用 using 语句来自动释放资源,避免资源泄漏。
3. 执行 INSERT、UPDATE、DELETE 等操作后,不需要再执行 ExecuteReader 方法,因为这些操作不会返回查询结果集。可以直接在 try 块中调用 ExecuteNonQuery 方法,避免不必要的查询操作。
4. 在 catch 块中应该记录日志或者抛出异常,而不是什么都不做。
5. 可以考虑将 GridView 的数据绑定操作移到 try 块内部,这样可以保证操作成功后再进行数据绑定。
下面是优化后的代码示例:
```
protected void Button1_Click1(object sender, EventArgs e)
{
string connectionString = @"Data Source=.;Initial Catalog=stu; Integrated Security=True";
string insertSql = "INSERT INTO UserInfo(sid,sno,sname,sex,age,gpa) VALUES(@sid, @sno, @sname, @sex, @age, @gpa)";
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand command = new SqlCommand(insertSql, connection))
{
command.Parameters.AddWithValue("@sid", s1.Text);
command.Parameters.AddWithValue("@sno", s2.Text);
command.Parameters.AddWithValue("@sname", s3.Text);
command.Parameters.AddWithValue("@sex", s4.Text);
command.Parameters.AddWithValue("@age", s5.Text);
command.Parameters.AddWithValue("@gpa", s6.Text);
try
{
connection.Open();
int rowsAffected = command.ExecuteNonQuery();
if (rowsAffected > 0)
{
string selectSql = "SELECT * FROM UserInfo";
using (SqlCommand selectCommand = new SqlCommand(selectSql, connection))
{
SqlDataReader reader = selectCommand.ExecuteReader();
GridView1.DataSource = reader;
GridView1.DataBind();
reader.Close();
}
}
}
catch (Exception ex)
{
// 记录日志或者抛出异常
}
}
}
}
```
阅读全文