无法分配...因为它是一个使用变量请指教 [英] Cannot assign ... Since it is a using variable please advise

查看:86
本文介绍了无法分配...因为它是一个使用变量请指教的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在此代码中,我在阻塞行中获取错误。请告知如何去做。



In this code im getting Error in the blocked line. Please advise how to go about it.

mconn.Open();
using (SqlCommand msqlcmd = new SqlCommand("select * from table1", dlsmain.dlsconn))
{
    using (SqlDataReader msqldat = msqlcmd.ExecuteReader())
    {
        msqldat.Read();
		//...  
		//... assignments from msqldat
		//...
        msqldat.Close();
        msqlcmd.CommandText = "select * from table2";
        msqldat = msqlcmd.ExecuteReader();		// Error : Cannot assign to msqldat because it is a 'using variable'.
        while (msqldat.Read())
        {
			//...
			//...  Some process using msqldat
			//...
        }
        msqldat.Close();
        msqlcmd.CommandText = "select * from table3";
        msqldat = msqlcmd.ExecuteReader();
        while (msqldat.Read())
        {
			//...
			//... Some process using msqldat
			//...
        }
    }
}
mconn.Close();





我有什么试过:



谷歌搜索错误但没有正确的频道。



What I have tried:

googled for the error but not got right channel.

推荐答案

尝试follow-

Try following-
using (SqlDataReader msqldat = msqlcmd.ExecuteReader())
{
        msqldat.Read();
	//...  
	//... assignments from msqldat
	//...
        //msqldat.Close();
} 
msqlcmd.CommandText = "select * from table2"; 
using (SqlDataReader msqldat = msqlcmd.ExecuteReader())
{
        msqldat = msqlcmd.ExecuteReader();		// Error : Cannot assign to msqldat because it is a 'using variable'.
        while (msqldat.Read())
        {
			//...
			//...  Some process using msqldat
			//...
        }
        //msqldat.Close();
}
msqlcmd.CommandText = "select * from table3";
using (SqlDataReader msqldat = msqlcmd.ExecuteReader())
{        
        msqldat = msqlcmd.ExecuteReader();
        while (msqldat.Read())
        {
			//...
			//... Some process using msqldat
			//...
        }
}





希望,它有帮助:)



Hope, it helps :)


信息清晰足够。您已使用语句在中声明(并分配了对) msqldat 的引用,这意味着它已被有效读取 - 只在街区内。如果你为它分配了一些其他值,那么它就会受到损害并且无法正确处理原始引用。
The message is clear enough. You have declared (and assigned a reference to) msqldat in your using statement, which means that it is effectively read-only inside the block. If you allocated some other value to it then it would be compromised and could not properly dispose the original reference.


You can't change reference once you used in using clause. I don't thing you require using there, its dis-connected.


这篇关于无法分配...因为它是一个使用变量请指教的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆