C#创建数据库及附加数据库的操作方法

本文实例讲述了C#创建数据库及附加数据库的操作方法。分享给大家供大家参考,具体如下:

/// <summary>
/// 附加数据库方法
/// </summary>
/// <param name="strSql">连接数据库字符串,连接master系统数据库</param>
/// <param name="DataName">数据库名字</param>
/// <param name="strMdf">数据库文件MDF的路径</param>
/// <param name="strLdf">数据库文件LDF的路径</param>
/// <param name="path">安装目录</param>
private  void CreateDataBase( string strSql, string DataName, string strMdf, string strLdf, string path)
{
  SqlConnection myConn = new SqlConnection(strSql);
  String str = null ;
  try
  {
   str = " EXEC sp_attach_db @dbname='"+DataName+"',@filename1='"+strMdf+"',@filename2='"+strLdf+"'";
   SqlCommand myCommand = new SqlCommand(str, myConn);
   myConn.Open();
   myCommand.ExecuteNonQuery();
   MessageBox.Show("数据库安装成功!点击确定继续");//需Using System.Windows.Forms
  }
  catch(Exception e)
  {
   MessageBox.Show("数据库安装失败!" + e.Message+"\n\n"+"您可以手动附加数据");
   System.Diagnostics.Process.Start(path);//打开安装目录
  }
  finally
  {
   myConn.Close();
  }
}
public override void Install(System.Collections.IDictionary stateSaver)
{
  string server = this.Context.Parameters["server"];//服务器名称
  string uid = this.Context.Parameters["user"];//SQlServer用户名
  string pwd = this.Context.Parameters["pwd"];//密码
  string path = this.Context.Parameters["targetdir"];//安装目录
  string strSql = "server=" + server + ";uid=" + uid + ";pwd=" + pwd + ";database=master";//连接数据库字符串
  string DataName = "JXC";//数据库名
  string strMdf = path + @"JXC.mdf";//MDF文件路径,这里需注意文件名要与刚添加的数据库文件名一样!
  string strLdf = path + @"jxc_log.ldf";//LDF文件路径
  base.Install(stateSaver);
  this.CreateDataBase(strSql, DataName, strMdf, strLdf, path);//开始创建数据库
}
/// <summary>
/// 测试连接
/// </summary>
/// <param name="serverName"></param>
/// <param name="dbName"></param>
/// <param name="userName"></param>
/// <param name="password"></param>
private SqlConnection TestConnection(string serverName, string dbName, string userName, string password)
{
    string connectionString = GetConnectionString(serverName, dbName, userName, password);
    SqlConnection connection = new SqlConnection(connectionString);
    try
    {
      if (connection.State != ConnectionState.Open)
      {
        connection.Open();
      }
      return connection;
    }
    catch
    {
      CloseConnection(connection);
      throw new InstallException("安装失败!\n数据库配置有误,请正确配置信息!");
    }
}
/// <summary>
/// 得到连接字符串
/// </summary>
/// <param name="serverName"></param>
/// <param name="dbName"></param>
/// <param name="userName"></param>
/// <param name="password"></param>
/// <returns></returns>
private string GetConnectionString(string serverName, string dbName, string userName, string password)
{
    string connectionString = "Data Source={0};Initial Catalog={1};User ID={2};Password={3}";
    connectionString = string.Format(connectionString, serverName, dbName, userName, password);
    return connectionString;
}
/// <summary>
/// 创建数据库
/// </summary>
/// <param name="serverName"></param>
/// <param name="dbName"></param>
/// <param name="userName"></param>
/// <param name="password"></param>
/// <param name="connection"></param>
/// <param name="stateSaver"></param>
public int CreateDataBase(SqlConnection connection)
{
    int result = -1;
    connection.ChangeDatabase("master");
    string createDBSql = @" if Exists(select 1 from sysdatabases where [name]=N'{0}')
        begin
        drop database {0}
        end
        GO
        CREATE DATABASE {0} ";
    createDBSql = string.Format(createDBSql, _dbName);
    //因为有Go在SQLCommand中不认识,所以以Go为分隔符取sql语句
    char[] split = new char[] { 'G', 'O' };
    string[] sqlList = createDBSql.Split(split);
    SqlCommand command = null;
    try
    {
      command = connection.CreateCommand();
      command.CommandType = System.Data.CommandType.Text;
      foreach (string sqlItem in sqlList)
      {
        if (sqlItem.Length > 2)
        {
          command.CommandText = sqlItem;
          result = command.ExecuteNonQuery();
        }
      }
      return result;
    }
    catch
    {
      CloseConnection(connection);
      command.Dispose();
      throw new InstallException("安装失败!\n数据库配置不正确!");
    }
}
/// <summary>
/// 分隔SQL语句
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
private string[] splitSql(string sql)
{
    Regex regex = new Regex("^GO", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    string[] sqlList = regex.Split(sql.ToUpper());
    return sqlList;
}

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#程序设计之线程使用技巧总结》、《C#操作Excel技巧总结》、《C#中XML文件操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程》

希望本文所述对大家C#程序设计有所帮助。

(0)

相关推荐

  • 利用C#实现分布式数据库查询

    随着传统的数据库.计算机网络和数字通信技术的飞速发展,以数据分布存储和分布处理为主要特征的分布式数据库系统的研究和开发越来越受到人们的关注.但由于其开发较为复杂,在一定程度上制约了它的发展.基于此,本文提出了在.Net环境下使用一种新的开发语言C#结合ADO.Net数据访问模型来开发分布式数据库系统,大大简化了开发过程. 1 分布式数据库系统 就其本质而言,分布式数据库系统的数据在逻辑上是统一的,而在物理上却是分散的.与集中式数据库相比它有如下主要优点: · 解决组织机构分散而数据需要相互联系的

  • C#连接操作 MySQL 数据库实例(使用官方驱动)

    MySQL 以其免费和足够的性能受到很大的青睐,当然对于国内小公司,甚至是大公司如果对版权看得薄,敢冒险的话,随便装个 SqlServer.DB2.Oracle 都行.对于 SqlServer 数据库,因其与 MS 是一家,自然在 .net 类库中有内建支持,假如 MySQL 就得找第三方的驱动了 -- .net 中多讲 Provider.在这里我也是作为一个预研专题,记录下 C# 连接 MySQL 的两种方法,分别使用 MySQL 官方的和 SourceForge 上一个开源的 MySQL 驱

  • C#自动创建数据库实现代码

    using System;  using System.Data;  using System.Configuration;  using System.Collections;  using System.Web;  using System.Web.Security;  using System.Web.UI;  using System.Web.UI.WebControls;  using System.Web.UI.WebControls.WebParts;  using System.

  • c#数据绑定之向查询中添加参数(.Net连接外部数据库)

    在ACCESS数据库中可以用MSSQL的形式定义操作字符串,也可以采用OLEDB的形式. MSSQL 形式 复制代码 代码如下: string sqlText = @"SELECT * FROM [User] WHERE UserName= @name"; OLEDB的形式 复制代码 代码如下: string sqlText = @"SELECT * FROM [User] WHERE UserName= ?"; 下一步是通过 OleDbCommand执行操作. 复

  • C#连接数据库和更新数据库的方法

    对数据库的操作总体可以分为两类:查询(select)和更新(insert,delete,update).为什么这样来分呢?仔细看看两类的区别,select只是从数据库中将数据拿出来使用,而其余三者都会对数据库的物理数据进行修改.这篇文章将接着阐述更新数据. 更新数据库信息首先是连接数据库,对数据库的更新需要一个对象:OleDbCommand.该对象表示要对数据源执行的SQL语句或存储过程. 这个对象有三个属性:1.CommandText表示要设置命令的文本:2.Connection表示要设置命令

  • C#动态创建Access数据库及表的方法

    本文实例讲述了C#动态创建Access数据库及表的方法.分享给大家供大家参考. 具体实现方法如下: 复制代码 代码如下: //添加两个com组件引用 //Microsoft ADO Ext. 2.8 for DDL and Security //Microsoft ActiveX Data Objects 2.8 Library using System; using System.Collections.Generic; using System.Linq; using System.Text

  • C#连接mysql数据库完整实例

    本文实例讲述了C#连接mysql数据库的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Configuration; using MySql.Data.MySqlClient; /// <summary> /// TestDatebase 的摘要说明 /// </summary> public class TestDatebase { public TestDatebase() { // // TODO: 在此处添加构造函数逻辑

  • C#查询SqlServer数据库并返回单个值的方法

    本文实例讲述了C#查询SqlServer数据库并返回单个值的方法.分享给大家供大家参考.具体实现方法如下: static public string GetSqlAsString(string sqlText, SqlParameter[] sqlParameters, string databaseConnectionString) { string result = ""; SqlDataReader reader; SqlConnection connection = new S

  • c#连接数据库及sql2005远程连接的方法

    一:C#连接SQL数据库 复制代码 代码如下: Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;Server=m

  • C#创建数据库及附加数据库的操作方法

    本文实例讲述了C#创建数据库及附加数据库的操作方法.分享给大家供大家参考,具体如下: /// <summary> /// 附加数据库方法 /// </summary> /// <param name="strSql">连接数据库字符串,连接master系统数据库</param> /// <param name="DataName">数据库名字</param> /// <param name

  • MSSQL附加数据库拒绝访问提示5120错误的处理方法

    MSSQL附加数据库时提示以下错误: 无法打开物理文件"***.mdf".操作系统错误 5:"5(拒绝访问.)". (Microsoft SQL Server,错误: 5120) 该经验介绍如何处理该报错,而后成功附加数据库. 添加Authenticated Users用户名.为Authenticated Users用户分配 完全控制 权限.而后再次附加数据库,附加数据库成功.

  • MSSQL  附加数据库提示“错误 823”数据恢复实操

    故障: 数据库报错:“MSSQL Server 2000 附加数据库错误823”,附加数据库失败. 故障分析: 数据库出现“823”报错信息通常有以下三种原因: 1.数据库的物理页面出现了损坏. 2.校验值损坏导致数据库页面无法被识别. 3.异常断电导致的文件系统损坏,数据库页面丢失. 数据库出现“823”报错信息这种情况下如果有备份,只需还原备份.但是如果没有备份,或者备份间隔时间太久,或者备份数据不可用,那么就需要进行数据恢复. 数据库数据恢复过程: 1.北亚数据恢复工程师尝试附加数据库,修

  • 使用 Navicat 创建数据库并用JDBC连接的操作方法

    昨天学习 Java 的数据库部分,就试着写了一下 JDBC 连接的代码,并尝试与数据库进行连接.中间也是遇到了一些问题,解决之后,在这里分享一下,也算做个记录.(有写的不对的地方,欢迎留言) 一.Navicat 创建数据库 1.首先装这个数据库可视化的软件:Navicat for MySQL (就是下面这个啦)这个就不多说了,需要的自己百度教程: 2. 建立连接 输入连接名称,用户名.密码,然后 OK 就可以创建新的连接了. 这样新的连接就建立好了 3. 创建数据库 右键 刚创建的 Test 连

  • sql2005 附加数据库出错(错误号:5123)解决方法

    [错误提示]无法为此请求检索数据.(Microsoft.SqlServer.SmoEnum)其他信息执行Transact-Sql语句或批处理时发生了异常.(Microsoft.SqlServer.ConnectionInfo)尝试打开或创建物理文件"d:\Data\***.mdf"时,Create file遇到操作系统错误5(拒绝访问.) [问题背景]数据库版本:SQL Server 2005企业版操作系统版本:Windows Server 2003企业版错误引发描述:数据库分离后,把

  • sql2008 附加数据库时出现错误5123提示的解决方法

    错误载图 解决方法: 1.直接把己有数据库复制到sql安装目录下C:/Program Files/Microsoft SQL Server/MSSQL10.MSSQLSERVER/MSSQL/DATA 这样就可以附加,不知道是不是在装数据库时漏选了什么操作,以前没遇到过. 2.在己有数据库mdf和ldf文件上, 右键---->属性---->添加---->高级---->立即查找---->Authenticated Users---->确定 ------>完全控制勾上

  • sql server2012附加数据库问题解决方法

    SQLServer错误5120:先用widows用户登录附加再分离重新用sa附加就行了 不行的话,绝招: 你先用SQLServer创建一个新的数据库,然后用你要附加的文件去覆盖掉创建的文件!覆盖之前,记得计算机-管理-服务-把SQL服务关掉

  • mssql server .ldf和.mdf的文件附加数据库的sql语句

    附加数据库就可以完成. 附加数据库: 企业管理器      --右键"数据库"      --所有任务      --附加数据库      --选择你的.mdf文件名      --确定      --如果提示没有.ldf文件,是否创建,选择"是" 查询分析器中的方法:      --有数据文件及日志文件的情况      sp_attach_db   '数据库名'      ,'数据文件名(*.mdf注意要带目录)'   --后面可以是用,分隔的该数据库的多个数据文

  • 分布式文档存储数据库之MongoDB访问控制的操作方法

    上一篇博客主要聊了下mongodb的分片机制以及分片集群的搭建,回顾请参考https://www.jb51.net/article/199845.htm:今天我们来了解下mongodb的访问控制: 什么是访问控制? 简单讲访问控制就是指,哪些用户可以访问哪些资源,对资源有哪些操作(权限):在mongodb中我们把数据库.或者集合叫做资源:也就说访问控制是用来限制某些用户对数据库或集合的操作:我们在mysql数据库中,我们通过给账号授权的方式达到控制哪些用户可以从哪些主机访问数据库,对数据库有哪些

  • SQL Server数据库分离和附加数据库的操作步骤

    目录 1. 概述 2. 分离数据库 2.1 分离数据库的步骤 3. 附加数据库 3.1 附加数据的操作步骤 总结 1. 概述 若要将数据库移动或更改到同一计算机的不同 SQL Server 实例,分离和附加数据库会很有用:用户可以分离数据库的数据和事务日志文件,再将它们重新附加到同一或其他 SQL Server 实例中: 在 64 位和 32 为环境中,SQL Server 磁盘存储格式均相同,所以,能将 32 位环境中的数据库附加到 64 位环境中,反过来也行: 从运行在某个环境中的服务器实例

随机推荐