我试图通过使用SqlConnection和SqlCommand对象建立一个简单的MS Access数据库连接.
正如您在这里看到的,我是如何建立连接的:
private SqlConnection GetConnection()
{
String connStr = ConfigurationManager.ConnectionStrings[0].ConnectionString;
SqlConnection conn = new SqlConnection(connStr);
return conn;
}
Run Code Online (Sandbox Code Playgroud)
在你问之前,是的,我试图将这段代码移动到调用它的方法.没有改变什么.它仍然读取连接字符串错误.
连接字符串如下所示,位于App.config文件中:
<add name="ConnString" connectionString="Server=*.*.*.*;Database=familie;User Id=mfs;Password=********;"/>
Run Code Online (Sandbox Code Playgroud)
但是当我收到此错误时:

并查看当时的连接字符串对象,字符串如下所示:
"data source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
Run Code Online (Sandbox Code Playgroud)
我花了大约2个小时试图完成这项工作,去许多不同的网站找出我做错了什么,但我得到的信息是太旧,冲突或处理连接到本地数据库,当这是实际上是通过我的客户提供给我的代理的外部访问(如果有人应该问,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;
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
异常消息可以准确地告诉您问题所在 - 您的连接未打开.您只需在执行命令之前打开连接:
conn.Open();
Run Code Online (Sandbox Code Playgroud)
顺便说一句,一个好的模式是using在处理SQL连接时使用一个块,以确保它被正确处理:
using (var conn = GetConnection())
{
using (var comm = xxxxxxx)
{
conn.Open();
using (var rdr = comm.ExecuteReader())
{
// xxxxx
}
}
}
Run Code Online (Sandbox Code Playgroud)
你不必专门关闭任何东西 - 这个using模式可以满足你的需求.
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |