C# 正在连接到app.config中的connectionString
我的连接字符串存储在App.Config中C# 正在连接到app.config中的connectionString,c#,sql,wpf,ms-access,database-connection,C#,Sql,Wpf,Ms Access,Database Connection,我的连接字符串存储在App.Config中 <connectionStrings> <clear /> <add name="CTaC_Information_System.Properties.Settings.CIS_beConn" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source="\\server\file\CIS Data\Database\CIS
<connectionStrings>
<clear />
<add name="CTaC_Information_System.Properties.Settings.CIS_beConn"
connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source="\\server\file\CIS Data\Database\CIS_be.accdb"e;;Jet OLEDB:Database Password=123"
providerName="System.Data.OleDb" />
在搜索时,我在堆栈溢出上找到了答案,但有些人说要放入var
,但当我键入var
时,它无法识别,所以我使用string
方法
当我进入typecisconn.Open()时代码>该选项不存在。我正在引用System.configuation
,System.Data.Sql代码>System.Data.SqlClient
和System.Data.OleDb代码>
有人能告诉我如何从c#连接到数据库吗?当我的应用程序运行时,我正在尝试测试连接,但我无法找到它。连接字符串只是一个字符串,用于连接,因此您应该执行以下操作:
public void DoSomeDatabaseOp()
{
string cisconn = ConfigurationManager.ConnectionStrings["CTaC_Information_System.Properties.Settings.CIS_beConn"].ConnectionString;
using (OleDbConnection conn = new OleDbConnection(cisconn))
{
conn.Open();
//Create your commands or do your SQL here.
}
}
您应该在使用连接的方法中创建/销毁连接。不要在类对象的根中保留对它的引用。如果您不执行数据库操作,这将保持连接干净和打开
如果你真的想,你可以这样做:
class MyClass
{
OleDbConnection _rootConn;
string _connStr;
public MyClass()
{
_connStr = string cisconn = ConfigurationManager.ConnectionStrings["CTaC_Information_System.Properties.Settings.CIS_beConn"].ConnectionString;
_rootConn = new OleDbConnection(_connStr);
}
public void DoSomeDatabaseOp()
{
//Use _rootConn here
}
}
但是该类应该实现IDisposable,以便能够正确地处理连接如何实现IDisposable超出了答案的范围,但请查看如何正确实现它。我认为您不应该在字符串中使用“,”或“,”这是不正确的。应该是“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\server\file\CIS Data\Database\CIS_be.accdb;Jet-OLEDB:Database;Password=123”加上密码字段前的分号,看起来您遗漏了一个分号。这部分代码是在我将连接添加到db时由Visual Studio创建的-我没有手动输入。虽然我在写问题的时候可能会漏打一点。这就是为什么我不能理解为什么我不能做cisconn.Open()代码>哦!哈,是的,我错过了。连接字符串只是一个连接字符串,您仍然需要使用OleDbConnection
来创建它,比如OleDbConnection conn=new OleDbConnection(cisconn)代码>然后您可以执行conn.Open()
这也是我的想法,但当我这样做时,CISCON下出现了一个错误,说明:字段初始值设定项不能引用非静态字段,方法或属性“CTaC\u Information\u System.StartMenu.cisconn”
我不知道该做什么。这是一个与连接字符串中的字符串完全不同的字符串,因此该错误必须来自其他地方,但除非您发布代码(编辑您的问题),否则我无法说出错误的位置。由于此错误而无法工作:字段初始值设定项无法引用非静态字段、方法或属性“CTaC\u Information\u System.StartMenu.cisconn”
我编辑了答案,您不应该将OleDbConnection用作类中的字段,如果这样做,则必须以不同的方式对其进行初始化。这很有效。我遇到的问题是我把它放在了公共部分类下,所以我把它移到了private void
中,砰的一声,它成功了!谢谢你的帮助!我修改了答案,只是为了说明如果你真的想把它放在类的根下,该怎么做。我能把连接字符串和这个放在单独的类中,然后通过调用所说的类来访问它吗?
class MyClass
{
OleDbConnection _rootConn;
string _connStr;
public MyClass()
{
_connStr = string cisconn = ConfigurationManager.ConnectionStrings["CTaC_Information_System.Properties.Settings.CIS_beConn"].ConnectionString;
_rootConn = new OleDbConnection(_connStr);
}
public void DoSomeDatabaseOp()
{
//Use _rootConn here
}
}