Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C在asp.net页面中SqlDataReader未正确执行#_C#_Asp.net_Sql Server - Fatal编程技术网

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参数
您应该始终在问题中包含错误消息,而不是假设我们知道问题是什么。