Connection属性尚未初始化错误(ExecuteNonQuery)

时间:2013-08-02 16:03:30

标签: sql-server asp.net-mvc connection-string

这个问题已在网络上得到解决,我尝试了许多事情但没有成功。 SQL EXPRESS服务设置为接受本地系统帐户,但问题仍然存在。

这是我的连接字符串:

<add name="PhoneTemplateChange" providerName="System.Data.SqlClient" connectionString="Data Source=.\SQLEXPRESS;Database=PhoneTemplateChange;Integrated Security=SSPI" />

我在我的构造函数中创建了一个用于执行数据库操作的类

_connectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["PhoneTemplateChange"].ConnectionString;

以及此类中插入数据的方法

 public void AddNewChangeOrder(int operation, int targetExt)
    {
        using (SqlConnection con = new SqlConnection(_connectionString))
        {
            string sql = "INSERT into [dbo].ChangeOrder (operation, targetExt, dtrequested) VALUES (@operation, @targetExt, @dtrequested)";
            using (SqlCommand cmd = new SqlCommand(sql))
            {
                try
                {

                    cmd.Parameters.AddWithValue("@operation", operation);
                    cmd.Parameters.AddWithValue("@targetExt", targetExt);
                    cmd.Parameters.AddWithValue("dtrequested", DateTime.Now);
                    //con.CreateCommand();
                    con.Open();
                    //cmd.InitializeLifetimeService();
                    int rows = cmd.ExecuteNonQuery();
                    con.Close();
                }
                catch (SqlException e)
                {
                    throw new Exception(e.Message);
                }
            }
        }

我已尝试使用连接字符串尝试所有不同的建议,上面方法中的注释代码也是我尝试解决问题的方法。仍然没有运气!

我也改变了连接字符串,我得到两种不同的例外

 Database=PhoneTemplateChange

上面给出了标题中的例外情况。 以下给出了异常“无法打开登录请求的数据库PhoneTemplatechange.mdf。登录失败的用户'mydomain \ myusername'”

 Database=PhoneTemplateChange.mdf

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您缺少指定cmd使用con作为连接的代码行。因此,Command(cmd)没有连接,并且con根本不与任何命令相关联。

在执行前添加此行:

cmd.Connection - con;

或者(以及更好的IMO)更改您的using语句,如下所示:

using (SqlCommand cmd = new SqlCommand(sql, con))