gpt4 book ai didi

c# - SqlConnection 状态总是在执行时关闭

转载 作者:行者123 更新时间:2023-11-30 19:59:22 28 4
gpt4 key购买 nike

我正在尝试使用 SqlConnectionSqlCommand 对象建立一个简单的 MS Access 数据库连接。

正如您在此处看到的,我是如何建立联系的:

private SqlConnection GetConnection()
{
String connStr = ConfigurationManager.ConnectionStrings[0].ConnectionString;
SqlConnection conn = new SqlConnection(connStr);
return conn;
}

在你问之前,是的,我已经尝试将这段代码移动到调用它的方法中。没有改变任何东西。它仍然读取错误的连接字符串。

连接字符串如下所示,位于 App.config 文件中:

<add name="ConnString" connectionString="Server=*.*.*.*;Database=familie;User Id=mfs;Password=********;"/>

但是当我得到这个错误时:

Error Image

然后看看当时的连接字符串对象,字符串是这样的:

"data source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"

我现在已经花了大约 2 个小时来尝试完成这项工作, Access 了许多不同的站点以找出我做错了什么,但我得到的信息要么太旧,要么冲突,要么处理连接到本地数据库的问题,当这实际上是通过我的客户给我的代理进行的外部 Access 时(TrustGate,如果有人应该问的话)

调用 GetConnection() 的方法如下所示:

public Dictionary<int,String> GetPostNrList()
{
SqlConnection conn = GetConnection();
SqlCommand cmd = new SqlCommand("Execute dbo.HENT_POST_NR_LISTE", conn);
var reader = cmd.ExecuteReader();
Dictionary<int, String> liste = new Dictionary<int, string>();
while (reader.NextResult())
{
int post_nr = (int) reader.GetSqlInt32(0);
String by = reader.GetString(1);
liste.Add(post_nr, by);
}
CloseConnection(conn);
return liste;
}

我究竟做错了什么?

最佳答案

异常消息准确地告诉您问题所在 - 您的连接未打开。您只需要在执行命令之前打开连接:

conn.Open();

顺便说一句,一个好的模式是在处理 SQL 连接时使用 using block ,以确保它得到正确处理:

using (var conn = GetConnection())
{
using (var comm = xxxxxxx)
{
conn.Open();
using (var rdr = comm.ExecuteReader())
{
// xxxxx
}
}
}

您不必专门关闭任何东西 - using 模式会为您完成这一切。

关于c# - SqlConnection 状态总是在执行时关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24314089/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com