ExecuteNonQuery:尚未初始化Connection属性 [英] ExecuteNonQuery: Connection property has not been initialized

查看:110
本文介绍了ExecuteNonQuery:尚未初始化Connection属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述




我正面临着以下代码的错误,因为我试图通过添加.docx文件来测试代码,它假设转到下面的部分代码但是我我收到的错误信息是:ExecuteNonQuery:Connection属性尚未初始化。我试图移动EdPersInfoCon.Open();在宣布新连接之后开始但是相同





Hi
I am facing a error with below code as i am trying to test the code by adding .docx file where it suppose to go to part of code as below but i am getting error message which is: ExecuteNonQuery: Connection property has not been initialized. i have tried to move EdPersInfoCon.Open(); to the beginning after declaring new connection but is the same


        protected void editHPPersInfobtn_Click(object sender, EventArgs e)
        {
            SqlConnection EdPersInfoCon = new SqlConnection(sc);
            SqlCommand EditUsrInfoCMD = new SqlCommand();
            EditUsrInfoCMD.Connection = EdPersInfoCon;

            var UsrNme = Session["UsrNme"];

            string FileExtentiona = System.IO.Path.GetExtension(EditImgFUP.FileName);
            string FileExtentiona2 = System.IO.Path.GetExtension(EditPersInfologoFileUp.FileName);
            string FileExtentiona3 = System.IO.Path.GetExtension(EditPesInfoBizImg1FU.FileName);
            string FileExtentiona4 = System.IO.Path.GetExtension(EditPesInfoBizImg2FU.FileName);
            string FileExtentiona5 = System.IO.Path.GetExtension(EditPesInfoBizImg3FU.FileName);

            if (Session["UsrNme"] != null)
            {
                if (EditImgFUP.HasFile || EditPersInfologoFileUp.HasFile || EditPesInfoBizImg1FU.HasFile || EditPesInfoBizImg2FU.HasFile || EditPesInfoBizImg3FU.HasFile)
                {
                    //if we upload .doc file,
                    if (EditImgFUP.PostedFile.ContentType.ToLower().StartsWith("image/") ||
                    EditPersInfologoFileUp.PostedFile.ContentType.ToLower().StartsWith("image/") ||
                    EditPesInfoBizImg1FU.PostedFile.ContentType.ToLower().StartsWith("image/") ||
                    EditPesInfoBizImg2FU.PostedFile.ContentType.ToLower().StartsWith("image/") ||
                    EditPesInfoBizImg3FU.PostedFile.ContentType.ToLower().StartsWith("image/"))
                    {
                        var files = new[] { FileExtentiona, FileExtentiona2, FileExtentiona3, FileExtentiona4, FileExtentiona5 };
                        var extensions = new[] { ".jpg", ".png" };
                        if ((files.Intersect(extensions).Count()) > 0)
                        {

                            string EditUsrInfoSQL = @"Update UserInfo SET  FN=@FN, LN=@LN, Password=@Password, RePass=@RePass, Website=@Website, 
Post=@Post, Email=@Email, Address=@Address, TeleNum=@TeleNum, Facebook=@Facebook, GooglePlus=@GooglePlus, Twitter=@Twitter, 
Img=@Img, Logo=@Logo, image1=@image1, image2=@image2, image3=@image3 Where UID=@UID";

                            EditUsrInfoCMD.Connection = EdPersInfoCon;
                            EditUsrInfoCMD.CommandType = CommandType.Text;
                            EditUsrInfoCMD.CommandText = EditUsrInfoSQL;

                            EditUsrInfoCMD.Parameters.AddWithValue("@UID", UsrNme);
                            EditUsrInfoCMD.Parameters.AddWithValue("@FN", FNEDTTXTBX.Text);
                            EditUsrInfoCMD.Parameters.AddWithValue("@LN", LNEDTTXTBX.Text);
                            EditUsrInfoCMD.Parameters.AddWithValue("@Password", PASSEDTTXTBX.Text);
                            EditUsrInfoCMD.Parameters.AddWithValue("@RePass", REPASEDTTXTBX.Text);
                            EditUsrInfoCMD.Parameters.AddWithValue("@Website", REWEBSITETXTBX.Text);
                            EditUsrInfoCMD.Parameters.AddWithValue("@Post", PSOTEDTTXTBX.Text);
                            EditUsrInfoCMD.Parameters.AddWithValue("@Address", AddEDTTXTBX.Text);
                            EditUsrInfoCMD.Parameters.AddWithValue("@Email", EMAEDTTXTBX.Text);
                            EditUsrInfoCMD.Parameters.AddWithValue("@TeleNum", TeleEDTTXTBX.Text);
                            EditUsrInfoCMD.Parameters.AddWithValue("@Facebook", FaceEDTTXTBX.Text);
                            EditUsrInfoCMD.Parameters.AddWithValue("@GooglePlus", GoogEDTTXTBX.Text);
                            EditUsrInfoCMD.Parameters.AddWithValue("@Twitter", TwitEDTTXTBX.Text);

                            string imgnouser = "/images/general/nouser.jpg";

                            string[] imagesUI = GetImagess(Convert.ToString(UsrNme));

                            if (EditImgFUP.HasFile)
                            {
                                EditUsrInfoCMD.Parameters.AddWithValue("@Img", EditImgFUP.FileName);
                                EditImgFUP.SaveAs(Server.MapPath("~/images/users/" + EditImgFUP.FileName));

                            }
                            else
                            {
                                if (string.IsNullOrEmpty(imagesUI[0]))
                                {
                                    EditUsrInfoCMD.Parameters.AddWithValue("@Img", imgnouser);
                                }
                                else
                                {
                                    EditUsrInfoCMD.Parameters.AddWithValue("@Img", imagesUI[0]);
                                }

                                
                            }


                            if (EditPersInfologoFileUp.HasFile)
                            {
                                EditUsrInfoCMD.Parameters.AddWithValue("@Logo", EditPersInfologoFileUp.FileName);
                                EditPersInfologoFileUp.SaveAs(Server.MapPath("~/images/Logos/" + EditPersInfologoFileUp.FileName));

                            }
                            else
                            {
                                if (string.IsNullOrEmpty(imagesUI[1]))
                                {
                                    EditUsrInfoCMD.Parameters.AddWithValue("@Logo", imgnouser);
                                }
                                else
                                {
                                    EditUsrInfoCMD.Parameters.AddWithValue("@Logo", imagesUI[1]);
                                }
                                
                            }

                            if (EditPesInfoBizImg1FU.HasFile)
                            {
                                EditUsrInfoCMD.Parameters.AddWithValue("@image1", EditPesInfoBizImg1FU.FileName);
                                EditPesInfoBizImg1FU.SaveAs(Server.MapPath("~/images/BizImgs/" + EditPesInfoBizImg1FU.FileName));

                            }
                            else
                            {
                                if (string.IsNullOrEmpty(imagesUI[2]))
                                {
                                    EditUsrInfoCMD.Parameters.AddWithValue("@image1", imgnouser);
                                }
                                else
                                {
                                    EditUsrInfoCMD.Parameters.AddWithValue("@image1", imagesUI[2]);
                                }

                            }


                            if (EditPesInfoBizImg2FU.HasFile)
                            {
                                EditUsrInfoCMD.Parameters.AddWithValue("@image2", EditPesInfoBizImg2FU.FileName);
                                EditPesInfoBizImg2FU.SaveAs(Server.MapPath("~/images/BizImgs/" + EditPesInfoBizImg2FU.FileName));

                            }
                            else
                            {
                                if (string.IsNullOrEmpty(imagesUI[3]))
                                {
                                    EditUsrInfoCMD.Parameters.AddWithValue("@image2", imgnouser);
                                }
                                else
                                {
                                    EditUsrInfoCMD.Parameters.AddWithValue("@image2", imagesUI[3]);
                                }

                            }

                            if (EditPesInfoBizImg3FU.HasFile)
                            {
                                EditUsrInfoCMD.Parameters.AddWithValue("@image3", EditPesInfoBizImg3FU.FileName);
                                EditPesInfoBizImg3FU.SaveAs(Server.MapPath("~/images/BizImgs/" + EditPesInfoBizImg3FU.FileName));

                            }
                            else
                            {
                                if (string.IsNullOrEmpty(imagesUI[4]))
                                {
                                    EditUsrInfoCMD.Parameters.AddWithValue("@image3", imgnouser);
                                }
                                else
                                {
                                    EditUsrInfoCMD.Parameters.AddWithValue("@image3", imagesUI[4]);
                                }

                            }
                        }
                        else
                        {
                            EditPersInfoImgFrmtWarnLbl.Text = "The file should have .png or .jpg format only";
                            EditPersInfoImgFrmtWarnLbl.ForeColor = System.Drawing.Color.Red;
                        }
                    }
          

                }
                    else
                    {

                        string EditUsrInfoSQL = @"Update UserInfo SET  FN=@FN, LN=@LN, Password=@Password, RePass=@RePass, Website=@Website, 
Post=@Post, Email=@Email, Address=@Address, TeleNum=@TeleNum, Facebook=@Facebook, GooglePlus=@GooglePlus, Twitter=@Twitter Where
UID=@UID";

                        EditUsrInfoCMD.Connection = EdPersInfoCon;
                        EditUsrInfoCMD.CommandType = CommandType.Text;
                        EditUsrInfoCMD.CommandText = EditUsrInfoSQL;

                        EditUsrInfoCMD.Parameters.AddWithValue("@UID", UsrNme);
                        EditUsrInfoCMD.Parameters.AddWithValue("@FN", FNEDTTXTBX.Text);
                        EditUsrInfoCMD.Parameters.AddWithValue("@LN", LNEDTTXTBX.Text);
                        EditUsrInfoCMD.Parameters.AddWithValue("@Password", PASSEDTTXTBX.Text);
                        EditUsrInfoCMD.Parameters.AddWithValue("@RePass", REPASEDTTXTBX.Text);
                        EditUsrInfoCMD.Parameters.AddWithValue("@Website", REWEBSITETXTBX.Text);
                        EditUsrInfoCMD.Parameters.AddWithValue("@Post", PSOTEDTTXTBX.Text);
                        EditUsrInfoCMD.Parameters.AddWithValue("@Address", AddEDTTXTBX.Text);
                        EditUsrInfoCMD.Parameters.AddWithValue("@Email", EMAEDTTXTBX.Text);
                        EditUsrInfoCMD.Parameters.AddWithValue("@TeleNum", TeleEDTTXTBX.Text);
                        EditUsrInfoCMD.Parameters.AddWithValue("@Facebook", FaceEDTTXTBX.Text);
                        EditUsrInfoCMD.Parameters.AddWithValue("@GooglePlus", GoogEDTTXTBX.Text);
                        EditUsrInfoCMD.Parameters.AddWithValue("@Twitter", TwitEDTTXTBX.Text);
                    }

      
                    EdPersInfoCon.Open();
                    int result = EditUsrInfoCMD.ExecuteNonQuery();
                    if (result > 0)
                    {
                        // Updated successfully;
                    }
                    EdPersInfoCon.Close();
                    
       
                EditUsrPan.Visible = false;
                showusrinfo.Visible = true;
                ReHPPersInfo();

            }
        }

推荐答案

连接未初始化。

在初始化命令之前添加以下内容 EdPersInfoCon.Open();


我不确定是否连接在所有情况下都会设置 EditUsrInfoCMD 。根据if分支的执行情况,connection属性可能为空(也可能是命令文本)。



所以我建议使用使用块并分离命令。这将有助于查看代码结构中的任何潜在问题并正确处理对象。



换句话说,在开头:

I'm not sure if the connection of the EditUsrInfoCMD gets set in all cases. Depending on the execution of the if branches, the connection property may be empty (and perhaps the command text also).

So I suggest using the using blocks and separate the commands. This would help to see any potential problems in the code structure and also dispose the objects properly.

In other words, in the beginning:
protected void editHPPersInfobtn_Click(object sender, EventArgs e)
{
    using(SqlConnection EdPersInfoCon = new SqlConnection(sc))
    {
        //SqlCommand EditUsrInfoCMD = new SqlCommand();
        //EditUsrInfoCMD.Connection = EdPersInfoCon;
 
        var UsrNme = Session["UsrNme"];
     
        string FileExtentiona = System.IO.Path.GetExtension(EditImgFUP.FileName);
...



后来


And later on

...
    string EditUsrInfoSQL = @"Update UserInfo SET  FN=@FN, LN=@LN, Password=@Password, RePass=@RePass, Website=@Website, 
Post=@Post, Email=@Email, Address=@Address, TeleNum=@TeleNum, Facebook=@Facebook, GooglePlus=@GooglePlus, Twitter=@Twitter, 
Img=@Img, Logo=@Logo, image1=@image1, image2=@image2, image3=@image3 Where UID=@UID";
                     
    using (SqlCommand EditUsrInfoCMD = new SqlCommand(EditUsrInfoSQL, EdPersInfoCon))
    {
        //EditUsrInfoCMD.Connection = EdPersInfoCon;
        //EditUsrInfoCMD.CommandType = CommandType.Text;
        //EditUsrInfoCMD.CommandText = EditUsrInfoSQL;
 
        EditUsrInfoCMD.Parameters.AddWithValue("@UID", UsrNme);
        EditUsrInfoCMD.Parameters.AddWithValue("@FN", FNEDTTXTBX.Text);
...






根据我的理解你的代码块你是执行命令对象后打开连接,而不是我请求你在连接字符串声明完成后打开连接。使用这个你可以实现你的目标而不用面对这类问题,并确保使用使用块作为Mika Wendeius建议这将在块关闭时清除不必要的实例。
Hi,

As per my understanding your code blocks you are open connection after perform command object, instead of that I request you to open connection after connection string declaration completed. Using this you can achieve your goal with out facing this type of issues, and make sure use "using" blocks as "Mika Wendeius" suggested this will clear the unnecessary instance once block closed.


这篇关于ExecuteNonQuery:尚未初始化Connection属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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