C# 使用C在asp.net页面中SqlDataReader未正确执行#
我使用C# 使用C在asp.net页面中SqlDataReader未正确执行#,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我使用SqlDataAdapter在代码的另一部分中访问了数据库,但我只需要一个读取器为我返回一行,而这段代码工作不正常。有人能看出我犯了什么错误吗 我只是尝试从返回的行的第一列中为一个标签赋值。当它在下面或下面运行时,我都无法获得弹出警报 private void loadProcInfo(string procid) { try { SqlConnection con = new SqlConnection(WebConfigurationManager.Co
SqlDataAdapter
在代码的另一部分中访问了数据库,但我只需要一个读取器为我返回一行,而这段代码工作不正常。有人能看出我犯了什么错误吗
我只是尝试从返回的行的第一列中为一个标签赋值。当它在下面或下面运行时,我都无法获得弹出警报
private void loadProcInfo(string procid)
{
try
{
SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["MyDbConn"].ConnectionString);
SqlCommand query = new SqlCommand("SELECT * FROM dbo.Book1 WHERE ID ='" + procid +"'", con);
//ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('"+query+"');", true);
using (SqlDataReader procinfoload = query.ExecuteReader())
{
if (procinfoload.Read())
{
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('IT WORKED');", true);
Id.Text = procinfoload.GetValue(0).ToString();
}
else
{
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('not success!');", true);
}
}
con.Close();
}
catch (Exception ex)
{
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + ex + "');", true);
//MessageBox.Show(ex.Message);
}
}
在尝试执行读取器之前打开连接
con.Open();
在尝试执行读取器之前打开连接
con.Open();
主要问题是代码在使用命令之前没有打开连接。不过,还有其他问题
- 如果不参数化查询,则代码可能会受到sql注入攻击
- 您不会将连接包装在using块中,如果引发异常,则连接将保持打开状态,直到发生垃圾回收。这是个坏习惯
主要问题是代码在使用命令之前没有打开连接。不过,还有其他问题
- 如果不参数化查询,则代码可能会受到sql注入攻击
- 您不会将连接包装在using块中,如果引发异常,则连接将保持打开状态,直到发生垃圾回收。这是个坏习惯
使用
sql参数
您应该始终在问题中包含错误消息,而不是假设我们知道问题是什么。使用sql参数
您应该始终在问题中包含错误消息,而不是假设我们知道问题是什么。