C#管理数据库连接字符串

时间:2021-04-13 13:37:20
 

管理连接字符串常见的方式有三种:<1>.配置文件管理字符串 <2>.UDL文件管理连接字符串 <3>.注册表管理连接字符串 <4>.其他  

 `(1).配置文件管理字符串app.config必须在源码目录下,在ide里用添加方式加入app.config 内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
    <add key="connString" value="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data Source=ACS502-ROCKY"/>
</appSettings>
</configuration>在代码中要using System.Configuration;然后直接 conn.ConnectionString=ConfigurationSettings.AppSettings["connString"];

app.config可以通过添加项目数据源的方式自动添加,当配置好项目数据源之后,会自动生成存放有连接字符串的app.config文件。也可以手动添加编写app.config文件,具体步骤是右键单击工程名->添加->新建项->应用程序配置文件,这里用默认的App.config的名字就好,不要改动->确定->添加成功然后就可以在工程里手动编写app.config的内容了。 

关于ConfigurationSettings.AppSettings 已过时解决方案

解决办法是: 1、在项目中引用System.Configuration.dll 在项目的解决方案中找到引用文件夹-->右建添加引用-->选择.net下的System.Configuration-->确定。 2、在需要的页面加上using System.Configuration 3、把System.Configuration.ConfigurationSettings.AppSettings["你要连的字符串"]; 替换成         System.Configuration.ConfigurationManager.AppSettings["你要连的字符串"]; 问题解决!(

 

(2).UDL文件管理连接字符串首先,新建一个文本文件,并把它另存为.UDL文件,然后再单击这个UDL文件,进行数据库的连接配置.以下示范如何使用OLE DB Universal Data Link (. udl)档来指定连接字符串,一个ADO . NET OleDbConnection对象会用来建立连接字符串。

OLE DB Universal Data Link (. udl) 文件提供一个便利方式来建立及验证可用来连接至OLE DB数据源的 ActiveX Data Objects (ADO)连接字符串。连接字符串会保存以特定格式到反副档名. udl 文件. 在代码中使用 File Name 参数的连接字符串,以指定名称的.UDL文件.使用 SQL Server OLE DB Provider 以连接到下列之一您的 Microsoft SQL Server数据库并建立一个名为Test.udl,该文件假设你保存在C盘下.在代码中运用如下:using System;
using System.Data;
using System.Data.OleDb;

namespace DataLink
{
    class Class1
    {
        static void Main(string[] args)
        {
            OleDbConnection myConnection = new OleDbConnection("File Name = d:\\test.udl");
            //注意,以上的参数格式必须如上,即File Name=UDL文件的路径.
            try
            {
                myConnection.Open();
                if (myConnection.State == ConnectionState.Open)
                    Console.WriteLine("Connection opened successfully!");
                else
                    Console.WriteLine("Connection could not be established");
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            Console.ReadLine();

            return;
        }
    }
}

 

(3)注册表方式管理连接字符串   使用注册表的好处是比较安全,注册表的访问权限很高,一般远程服务在没有得到管理员账号的情况下是没有权限来对注册表进行操作的,那么用来连接数据库的账户信息便安全许多。

<1>.在注册表中建立相应的键及值:

     有三种方法可以在注册表中添加我们需要的信息:

1. 纯手工的方法:开始->运行->Regedit,然后在相应的位置新建所需要的键和值。

2. 运行一个注册表注册程序(新建一个文本文件,并另存为.REG文件),内容如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\ACSXM009]

"ACSXM009"="server=localhost;database=Town;User Id=sa;Pwd=pass"

双击运行.REG文件便可以在相应的位置添加相应的信息。

3. 程序实现(C#):
写键值:   RegistryKey regKey = Registry.LocalMachine.CreateSubKey("SOFTWARE\\ACSXM009");

   regKey.SetValue(dbName,"server=Rocky;database=BS175;User ID=sa;Pwd=acsping");

说明:C#有对注册表进行处理的类和方法,首先要引入命名空间Microsoft.Win32 ,CreateSubKey方法会自动检测有没有相应的键值,如果没有则会创建,如果有则返回表示该键的RegistryKey的实例,如果可以确定有键值的话,也可以用OpenSubKey打开。dbName是值名,通过变量传过来。二、读取键值:

读取键值:
RegistryKey reg= Registry.LocalMachine.OpenSubKey("SOFTWARE\\ACSXM009", false);

connectionString = reg.GetValue(dbName).ToString().Trim();

说明:从相应的键处读取值信息,然后得到数据库链接字符串赋给一变量或者属性,然后就可以进行数据库连接了。

注意:
如果采用程序的方式创建注册表的键值,就要确保aspnet用户有对注册表的操作权限,方法如下:“开始->运行”,输入命令,“regedt32”或"regedit",找到“System->CurrentControlSet->Services->Eventlog”,选择“安全->权限->添加”,然后找到本机的“AspNet”用户,加进来并且给读取权限就好了,加进来后目录中会多一个“aspnet_wp account”.