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,如需转载请自行联系原作者

 
相关文章
|
29天前
|
数据库 C# 开发者
ADO.NET连接到南大通用GBase 8s数据库
ADO.NET连接到南大通用GBase 8s数据库
|
28天前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
1月前
|
消息中间件 资源调度 关系型数据库
如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理
本文介绍了如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理。主要内容包括安装Debezium、配置Kafka Connect、创建Flink任务以及启动任务的具体步骤,为构建实时数据管道提供了详细指导。
91 9
|
1月前
|
安全 Nacos 数据库
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改。本文详细探讨了这一问题的原因及解决方案,包括限制公网访问、使用HTTPS、强化数据库安全、启用访问控制、监控和审计等步骤,帮助开发者确保服务的安全运行。
49 3
|
1月前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
27天前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
28天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
28天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
41 1
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
37 3