C#中的数据库配置和连接

简介:




1. 向项目添加app.config文件:

右击项目名称,选择添加添加新建项,在出现的添加新项对话框中,选择添加应用程序配置文件;如果项目以前没有配置文件,则默认的文件名称为“app.config”,单击确定。出现在解决方案资源管理器中的app.config文件为:
<? xml  version ="1.0"  encoding ="utf-8"  ?> 

< configuration > 

    

</ configuration > 
2.  connectionStrings配置节:
请注意:如果您的SQL版本为2005 Express版,则默认安装时SQL服务器实例名为localhost\SQLExpress,须更改以下实例中“Data Source=****;”一句为“Data Source=localhost\SQLExpress;”,在等于号的两边不要加上空格。
如本例中:
< connectionStrings  > 

         < clear /> 

         < add  name ="ProConnectionString"  connectionString ="Data Source=172.18.139.215;Initial Catalog=NEWDB;User ID=dba;Password=dba" /> 

     </ connectionStrings > 

3. appSettings配置节:
appSettings配置节为整个程序的配置,如果是对当前用户的配置,请使用userSettings配置节,其格式与以下配置书写要求一样。
< appSettings > 

         < add  key ="isFirstRunSystem"  value ="true" /> 

     </ appSettings > 

 
C#中的数据库配置
App.config 文件:
 
<? xml  version ="1.0"  encoding ="utf-8"  ?> 

< configuration > 

    

     < appSettings > 

         < add  key ="isFirstRunSystem"  value ="true" /> 

     </ appSettings > 

</ configuration > 

4.读取和更新配置节
FrmDBConfig.cs 
 
/*---------------------------------------------------------------- 
 
        // Copyright (C) Project 
 
        // 文件名: 
 
        // 文件功能描述:进行数据库配置和连接 
 
        // 
 
        //    
 
        // 创建标识: 
 
        // 
 
        // 修改标识: 
 
        // 修改描述: 
 
----------------------------------------------------------------*/
 
 
using System; 
 
using System.Collections.Generic; 
 
using System.ComponentModel; 
 
using System.Data; 
 
using System.Drawing; 
 
using System.Text; 
 
using System.Windows.Forms; 
 
using System.Data.ProviderBase; 
 
using System.Data.SqlClient; 
 
namespace Kitchen.UI 
 

 
         public partial  class FrmDBConfig : Form 
 
        { 
 
                 public FrmDBConfig() 
 
                { 
 
                        InitializeComponent(); 
 
                        BindDataServer(); 
 
                } 
 
                 public FrmDBConfig(FrmWelcome fw) 
 
                { 
 
                        InitializeComponent(); 
 
                        BindDataServer(); 
 
                        fw.Close(); 
 
                } 
 
                 /// <summary> 
 
                 /// 测试数据库连接 
 
                 /// </summary> 
 
                 /// <param name="sender"></param> 
 
                 /// <param name="e"></param> 
 
                 private  void button1_Click( object sender, EventArgs e) 
 
                { 
 
                         if (txtPassWord.Text.Trim() ==  "" || cbServerName.Text.Trim() == "" || txtUsername.Text.Trim() == "") 
 
                        { 
 
                                MessageBox.Show( "输入服务器名(或者IP)、用户名和密码"); 
 
                                 return
 
                        } 
 
                         string connStr =  string.Format( "Data Source={0};User ID={1};Password={2}", cbServerName.Text.Trim(), txtUsername.Text.Trim(), txtPassWord.Text.Trim()); 
 
                        SqlConnection conn =  new SqlConnection(connStr); // sqlcp = new SqlClientPermission() 
 
//建立连接 
 
                         try 
 
                        { 
 
                                 //myConn = new SqlConnection(connStr); 
 
                                conn.Open(); 
 
                        } 
 
                         catch (Exception ee) 
 
                        { 
 
                                MessageBox.Show( "连接失败"); 
 
                                 return
 
                        } 
 
                        MessageBox.Show( "连接成功"); 
 
                         
 
                } 
 
    
 
                 private  void button4_Click( object sender, EventArgs e) 
 
                { 
 
                         this.Close(); 
 
                } 
 
    
 
                 private  void button2_Click( object sender, EventArgs e) 
 
                { 
 
                         if (txtPassWord.Text.Trim() ==  "" || cbServerName.Text.Trim() == "" || txtUsername.Text.Trim() == "") 
 
                        { 
 
                                MessageBox.Show( "输入服务器名(或者IP)、用户名和密码"); 
 
                                 return
 
                        } 
 
                         if ((System.Configuration.ConfigurationSettings.AppSettings.GetValues( "isFirstRunSystem"))[0] ==  "true"
 
                        { 
 
                                 try 
 
                                { 
 
                                         string str =  string.Format( "data source ={0};initial catalog={1};user id={2};password={3};"
 
                                                cbServerName.Text.Trim(), txtDBName.Text.Trim(), txtUsername.Text.Trim(), txtPassWord.Text); 
 
                                        Kitchen.Util.Config cc =  new Kitchen.Util.Config(); 
 
                                        cc.UpdateDBConfig( "ProConnectionString ", str,  "System.Data.SqlClient"); 
 
                                        MessageBox.Show( "配置成功,软件将自动重启动。"); //更新配置节 
 
                                        cc.UpdateConfig( "isFirstRunSystem""false"); //更新配置节 
 
                                         this.Close(); 
 
                                        Application.Restart(); 
 
                                } 
 
                                 catch (Exception ee) 
 
                                { 
 
                                        MessageBox.Show( "配置失败\n" + ee.Message,  "错误"); 
 
                                } 
 
                        } 
 
                         else 
 
                        { 
 
                                 try 
 
                                { 
 
                                         string str =  string.Format( "data source ={0};initial catalog={1};user id={2};password={3};"
 
                                                cbServerName.Text.Trim(), txtDBName.Text.Trim(), txtUsername.Text.Trim(), txtPassWord.Text); 
 
                                        Kitchen.Util.Config cc =  new Kitchen.Util.Config(); 
 
                                        cc.UpdateDBConfig( "ProConnectionString ", str,  "System.Data.SqlClient"); 
 
                                         if (MessageBox.Show( "更新成功,是否重新启动软件?""提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) 
 
                                        { 
 
                                                 this.Close(); 
 
                                                Application.Restart(); 
 
                                        } 
 
                                         else 
 
                                        { 
 
                                                 this.Close(); 
 
                                        } 
 
                                } 
 
                                 catch (Exception ee) 
 
                                { 
 
                                        MessageBox.Show( "配置失败\n" + ee.Message,  "错误"); 
 
                                } 
 
                        } 
 
                } 
 
    
 
                 private  void BindDataServer() 
 
                { 
 
                        System.Data.Sql.SqlDataSourceEnumerator sdse = System.Data.Sql.SqlDataSourceEnumerator.Instance; 
 
                        DataTable dt = sdse.GetDataSources(); 
 
                        cbServerName.DataSource = dt; 
 
                        cbServerName.DisplayMember =  "ServerName"
 
                } 
 
        } 
 

 
Config.cs 文件:
/*----------------------------------------------------------------/ 
 
 Copyright (C)版权所有。 
 
    
 
 文件名: 
 
 文件功能描述:更新connectionStrings配置节 
 
    
 
 修改标识: 
 
 修改描述: 
 
    
 
/----------------------------------------------------------------*/
 
 
    
 
using System; 
 
using System.Collections.Generic; 
 
using System.Text; 
 
using System.Xml; 
 
using System.Windows.Forms; 
 
namespace Kitchen.Util 
 

 
         public  class Config 
 
        { 
 
                 //更新app.config的函数 
 
                 //配置文件的源文件 
 
    
 
                 //<?xml     version="1.0"     encoding="utf-8"     ?>        
 
                 //<configuration>        
 
                 //<appSettings>        
 
                 //<add     key="ServerName"     value=""/>        
 
                 //</appSettings>        
 
                 //</configuration>     
 
                 /// <summary> 
 
                 /// 更新app.config的数据库连接字符串函数 
 
                 /// </summary> 
 
                 /// <param name="connstrname">连接字符串名称</param> 
 
                 /// <param name="connstr">连接字符串</param> 
 
                 public     void     UpdateDBConfig( string     connstrname, string connstr, string providername) 
 
                {        
 
                        XmlDocument     doc     =      new     XmlDocument();        
 
                        doc.Load(Application.ExecutablePath+ ".config"); 
 
                        XmlNode node = doc.SelectSingleNode( @"//add[@name='" + connstrname + "']");        
 
                        XmlElement     ele     =     (XmlElement)node; 
 
                        ele.SetAttribute("connectionString", connstr); 
 
                        ele.SetAttribute("providerName", providername); 
 
                        doc.Save(Application.ExecutablePath+".config");            
 
                } 
 
    
 
                /// <summary> 
 
                /// 修改config中<add key ='keyname' value='keyvalue' /> 
 
                /// </summary> 
 
                /// <param name="keyname">键名称</param> 
 
                /// <param name="keyvalue">键值</param> 
 
                public void UpdateConfig(string keyname,string keyvalue)                { 
 
                        XmlDocument doc = new XmlDocument(); 
 
                        doc.Load(Application.ExecutablePath + ".config"); 
 
                        XmlNode node = doc.SelectSingleNode(@"//add[@key='" + keyname + "']"); 
 
                        XmlElement ele = (XmlElement)node; 
 
                        ele.SetAttribute("value", keyvalue); 
 
                        doc.Save(Application.ExecutablePath + ".config"); 
 
                }        
 
    
 
    
 
        } 
 

 
    





     本文转自 gaochaojs 51CTO博客,原文链接:http://blog.51cto.com/jncumter/230195,如需转载请自行联系原作者

 
相关文章
|
1月前
|
存储 监控 安全
数据库多实例的部署与配置方法
【10月更文挑战第23天】数据库多实例的部署和配置需要综合考虑多个因素,包括硬件资源、软件设置、性能优化、安全保障等。通过合理的部署和配置,可以充分发挥多实例的优势,提高数据库系统的运行效率和可靠性。在实际操作中,要不断总结经验,根据实际情况进行调整和优化,以适应不断变化的业务需求。
|
1月前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
126 68
|
26天前
|
消息中间件 资源调度 关系型数据库
如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理
本文介绍了如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理。主要内容包括安装Debezium、配置Kafka Connect、创建Flink任务以及启动任务的具体步骤,为构建实时数据管道提供了详细指导。
53 9
|
26天前
|
安全 Nacos 数据库
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改。本文详细探讨了这一问题的原因及解决方案,包括限制公网访问、使用HTTPS、强化数据库安全、启用访问控制、监控和审计等步骤,帮助开发者确保服务的安全运行。
31 3
|
1月前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
1月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
45 3
|
9天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。
|
1月前
|
Java 数据库连接 数据库
如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面
本文介绍了如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面。通过合理配置初始连接数、最大连接数和空闲连接超时时间,确保系统性能和稳定性。文章还探讨了同步阻塞、异步回调和信号量等并发控制策略,并提供了异常处理的最佳实践。最后,给出了一个简单的连接池示例代码,并推荐使用成熟的连接池框架(如HikariCP、C3P0)以简化开发。
48 2
|
2月前
|
关系型数据库 MySQL 数据库连接
DBeaver如何连接一个数据库
【10月更文挑战第27天】DBeaver 是一款功能强大的通用数据库管理工具,支持多种主流数据库。本文介绍了使用 DBeaver 连接数据库的基本步骤,包括下载安装、创建新连接、选择数据库类型、配置连接参数、测试连接以及最终连接到数据库。详细的操作指南帮助用户轻松管理和操作数据库。
232 9
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
89 2