Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.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# 更新后的MySqlDataReader NullReferenceException_C#_Mysql_Asp.net_Mysqlconnection_Mysqldatareader - Fatal编程技术网

C# 更新后的MySqlDataReader NullReferenceException

C# 更新后的MySqlDataReader NullReferenceException,c#,mysql,asp.net,mysqlconnection,mysqldatareader,C#,Mysql,Asp.net,Mysqlconnection,Mysqldatareader,在数据库中插入或更新某些内容后,当我使用MySqlDataReader时,会出现System.NullReferenceException 这是我的密码: protected void Page_Load(object sender, EventArgs e) { using (var conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["mysqlconn"].ConnectionString))

在数据库中插入或更新某些内容后,当我使用MySqlDataReader时,会出现System.NullReferenceException

这是我的密码:

protected void Page_Load(object sender, EventArgs e)
{
    using (var conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["mysqlconn"].ConnectionString))
        {
            conn.Open();
            using (MySqlCommand comm = conn.CreateCommand())
            {
                comm.CommandText = "UPDATE zs_orders SET orderNo = @orderNo, firstSent = @firstSent WHERE ID =  @id";
                comm.Parameters.AddWithValue("orderNo", "dasda");
                comm.Parameters.AddWithValue("firstSent", DateTime.Now);
                comm.Parameters.AddWithValue("id", Convert.ToInt32(3));
                comm.ExecuteNonQuery();
                comm.Cancel();
                comm.Dispose();
            }
            conn.Close();
        } 


        using (var myConn = new MySqlConnection(ConfigurationManager.ConnectionStrings["mysqlconn"].ConnectionString))
        {
            myConn.Open();
            using (MySqlCommand cmd = new MySqlCommand("select * from zs_customers;", myConn))
                {
                    using (MySqlDataReader dr = cmd.ExecuteReader())
                    {
                        while (dr.Read()) // << Error
                        {
                            //....
                        }
                        dr.Close();
                        myConn.Close();
                    }
                }
        }
}
[NullReferenceException:对象引用未设置为 对象。]zs_测试。页面加载(对象发送方,事件参数e)在 c:\Users\JennyJ\skydrive\www\wwwroot\zs test.aspx.cs:47
System.Web.Util.CallEventHandlerDelegateProxy.Callback(对象发送方, EventArgs e)+51 System.Web.UI.Control.OnLoad(EventArgs e)+92
System.Web.UI.Control.LoadRecursive()+54
System.Web.UI.Page.ProcessRequestMain(布尔值 IncludeStages前同步点,布尔值IncludeStages后同步点) +772


在从SqlDataReader读取数据之前,请使用
if(dr.HasRows)
,以避免System.NullReferenceException–对象引用未设置为对象的实例。

嗯,我发现了错误

Row 45:    using (MySqlDataReader dr = cmd.ExecuteReader())
Row 46:    {
Row 47 >>>:     while (dr.Read())
Row 48:         {
Row 49:              //....
这是一句话:

                comm.Cancel();

它不应该在那里。愚蠢的错误

您确定您的
zs_客户
表不是空的吗?因为您正在插入
zs_订单
表格。。而
3
是一个
int
,像
Convert那样使用它是没有意义的。ToInt32(3)
是的,如果我不先更新任何内容,它可以正常工作。例如,如果我创建了一个客户,然后导航到另一个包含客户列表的Web表单,也会出现错误。连接到数据库时似乎发生了一些问题。如果我添加这个,我将得到相同的错误。有匹配的记录,但如果我访问dr对象,我将获得NullReferenceExection。如果您正在页面上执行另一个服务器事件,请在if(!IsPostBack){}块中写入上述代码。