“使用”后 ConnectionString 属性尚未初始化

Vít*_*ton 2 c# sql sql-server nhibernate

我的连接字符串、我的数据库和一切都运行良好,但就在我在我的页面上调用它一次时。

我有几种方法可以连接到我的数据库并向我返回一个值,这是我第一次需要使用其中的两个。我收到此错误conn.Open()

“ConnectionString 属性尚未初始化。” “描述:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。”

异常详细信息:System.InvalidOperationException:ConnectionString 属性尚未初始化。

当我打电话时,只有一个工作得很好。

我的这两种方法的来源是,我对每个人都使用几乎相同的代码,只是更改了表名:

public DataTable Category(){
        sda = new SqlDataAdapter("select * from tbl_category", conn);
        sda.Fill(dt);
        return dt;
}
Run Code Online (Sandbox Code Playgroud)

public int CategoryLastId(){
    using (conn){
       conn.Open();
       sqlCommand = new SqlCommand("SELECT MAX(Id) AS LastID FROM tbl_category", conn);
       sqlCommand.ExecuteNonQuery();
       Int32 newId = (Int32)sqlCommand.ExecuteScalar();
       conn.Close();
       return Convert.ToInt32(newId);
   }
}
Run Code Online (Sandbox Code Playgroud)

感觉他们有冲突(另外,调用 .Get with NHibernate,但这也工作正常)

gas*_*ini 5

问题是该using语句在返回时正在关闭连接。

创建SqlConnection您的 using 语句内部,如下所示:

  using (SqlConnection conn = new SqlConnection(connString)) { ... }
Run Code Online (Sandbox Code Playgroud)

从您的配置文件中获取连接字符串:

  connString = ConfigurationManager.ConnectionStrings["yourConnString"].ConnectionString;
Run Code Online (Sandbox Code Playgroud)

配置文件:

   <connectionStrings>
      <add name="yourConnString" connectionString="..." providerName="..."/>          
   </connectionStrings>
Run Code Online (Sandbox Code Playgroud)