`
xqf222
  • 浏览: 128920 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

C#批量附加指定目录下的所有数据库文件到数据库中

 
阅读更多

应用场合:因为经常更换操作系统,所以D盘存放数据库文件目录的数据库每次都要一个一个的附加到MSSQL中,因此设计程序批量附加省时间也方便自己和大家。

程序不足:没有去研究跟实现NDF日志文件附加和多个日志文件的数据库附加。

程序源码:


/// <summary>
/// 循环查找指定目录下要附加的数据库文件和对应的日志文件,连接本地数据库并执行数据库附加命令
/// </summary>
private void AttachFolderDB()
{
string strFileFolder = "";
FolderBrowserDialog myFolderBrowserDialog = new FolderBrowserDialog();
myFolderBrowserDialog.ShowDialog();
if (myFolderBrowserDialog.SelectedPath != "")
{
strFileFolder = myFolderBrowserDialog.SelectedPath;
}
//查找所有的MDF文件列表
string[] arrAttachFilePath = null;
if (strFileFolder != "")
{
DirectoryInfo dir = new DirectoryInfo(strFileFolder);
//判断目录下是否存在主数据库文件
FileInfo[] finfo = dir.GetFiles("*.mdf");
if (finfo.Length > 0)
{
arrAttachFilePath = new string[finfo.Length];
if (finfo.Length > 0)
{
int i = 0;
foreach (FileInfo f in finfo)
{
arrAttachFilePath[i] = f.FullName;
i = i + 1;
}
}
}

}
//循环附加数据库
if (arrAttachFilePath != null)
{
for (int i = 0; i < arrAttachFilePath.Length; i++)
{
string strFile = arrAttachFilePath[i].ToString();
string strMdfFilePath = arrAttachFilePath[i].ToString();//mdf路径
string strLogFilePath = "";//日志文件路径
string strLdfFilePath = "";//日志文件路径
string strDataFileName = strMdfFilePath.Substring(strMdfFilePath.LastIndexOf("\\") + 1, strMdfFilePath.Length - strMdfFilePath.LastIndexOf("\\") - 1);
strDataFileName = strDataFileName.Remove(strDataFileName.LastIndexOf("."));

string logIndex = "_Data";
int n = strDataFileName.IndexOf(logIndex);

if (n == -1)
{
strLogFilePath = strMdfFilePath.Remove(strMdfFilePath.LastIndexOf("\\")) + "\\" + strDataFileName + "_log.ldf";
strLdfFilePath = strMdfFilePath.Remove(strMdfFilePath.LastIndexOf("\\")) + "\\" + strDataFileName + ".ldf";
}
else
{
strDataFileName = strDataFileName.Remove(strDataFileName.LastIndexOf("_"));
strLogFilePath = strMdfFilePath.Remove(strMdfFilePath.LastIndexOf("\\")) + "\\" + strDataFileName + "_log.ldf";
strLdfFilePath = strMdfFilePath.Remove(strMdfFilePath.LastIndexOf("\\")) + "\\" + strDataFileName + ".ldf";
}

StringBuilder sb = new StringBuilder();
sb.Append("sp_attach_db @dbname='" + strDataFileName + "',@filename1='" + strMdfFilePath + "'");
if (System.IO.File.Exists(strLogFilePath))
{
sb.Append(",@filename2='" + strLogFilePath + "'");
AttachDataBase(sb.ToString());
}
else if (System.IO.File.Exists(strLdfFilePath))
{
sb.Append(",@filename2='" + strLdfFilePath + "'");
AttachDataBase(sb.ToString());
}
else
{
Console.WriteLine("数据库文件" + strMdfFilePath + "缺少必备的日志文件!");
}
}
}
}
/// <summary>
/// 连接数据库并执行附加对应的数据库文件命令
/// </summary>
/// <param name="strSql">附加数据库命令字符串</param>
/// <returns></returns>
private bool AttachDataBase(string strSql)
{
SqlConnection con = new SqlConnection(@"Data Source=(local);Initial Catalog=master;Integrated Security=True");
try
{
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = strSql;
cmd.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
//如果数据库中存在名为要添加的数据库时则抛出异常
Console.WriteLine("附加数据库时异常:" + ex.Message);
return false;
}
finally
{
con.Close();
}
}

分享到:
评论

相关推荐

    C#自动附加数据库程序源码

    在SQL Server中,附加数据库是指将已存在的数据库文件(.mdf和.ldf)连接到实例上,以便可以访问和操作其中的数据。这个过程通常需要手动进行,但在开发或维护大型数据库时,自动附加数据库功能可以显著提高效率,...

    C# 附加数据库程序

    读取目录是指程序能够遍历指定路径下的所有文件和子目录。在C#中,我们可以使用System.IO命名空间中的Directory和FileInfo类来实现。Directory类提供了GetFiles和GetDirectories方法来获取文件和目录,FileInfo类则...

    C#自动附加数据库工具

    在IT行业中,C#是一种广泛使用的编程...通过这个工具,开发者和数据库管理员可以轻松地批量附加数据库,节省时间,减少出错的可能性,提高工作效率。同时,它也展示了C#作为强大编程语言在数据库管理领域中的应用潜力。

    C#实现通过 eDrawings API 批量将 SOLIDWORKS 文件导出为 PDF,MES系统中实现在线查看

    其次,需要编写批量处理的逻辑,这通常涉及到文件系统的操作,如遍历指定文件夹内的所有SOLIDWORKS文件,获取文件列表。 然后,程序将通过循环逐一对这些文件调用eDrawings API提供的导出功能,将每个文件转换为PDF...

    C#对ACCESS数据库进行增删查改

    在“整体导入”和“单个导入”文件信息到数据库时,你可以批量处理文件夹中的所有文件,或者允许用户逐个选择。这可能涉及到批处理SQL命令或者多次执行单个命令。 综上所述,这个项目展示了如何使用C#和Access...

    C#数据库操作的基本演示程序带数据库文件版本

    在本资源中,我们主要关注的是使用C#进行数据库操作的实践示例,这包括了与数据库的连接、数据查询以及可能的数据修改操作。资源包含了两个SQL查询文件(SQLQuery1.sql和SQLQuery2.sql)以及一个名为"Database"的...

    基于c#实现form图书管理系统(包括读者管理系统,借阅管理系统,图书管理系统,职工管理系统,音乐播放,发送邮件,批量导出数据库文件)

    本系统基于C#编程语言,结合Windows Forms(Form)技术,构建了一个功能强大的图书管理系统,涵盖了读者管理、借阅管理、图书管理、职工管理等多个核心模块,并融合了音乐播放、邮件发送以及数据库批量导出等附加...

    SQL数据库的C#的应用

    - **附加数据库**: 使用`ALTER DATABASE` SQL命令,配合C#的SqlCommand执行,可以将数据库文件附加到SQL Server实例。 - **备份数据库**: 利用`BACKUP DATABASE` SQL语句,结合C#代码,可以制定备份策略,将数据库...

    C#读写Influxdb代码例子

    标题中的"C#读写Influxdb代码例子"指的是使用C#编程语言与InfluxDB数据库进行交互的示例代码。InfluxDB是一个专为时序数据设计的高性能、开源数据库,常用于监控、日志记录和大数据分析。下面将详细阐述如何在C#中...

    课程设计-基于C#的图书管理系统(源码+数据库).zip

    接着,需要修改项目中的数据库连接字符串,确保系统能正确地连接到刚才附加的数据库,这样数据的读写操作才能顺利进行。 在课程设计中使用这样的项目,学生可以学习到以下C#相关的知识点: 1. **Windows Forms**:...

    SQL添加数据库方法视频

    5. **附加数据库**:在SQL中,如果你有一个已经存在于其他位置的数据库文件,你可以使用`ATTACH DATABASE`命令将其连接到当前的SQL实例。这在数据迁移或备份恢复时非常有用。 6. **数据操作**:查询数据(SELECT)...

    C#基于DBContext(EF)实现通用增删改查的REST方法实例

    同时,配置文件(App.config)中的连接字符串也需要正确设置,以便DBContext能够连接到正确的数据库。 总的来说,利用C#的DBContext和泛型,结合RESTful设计模式,可以创建一套可复用的增删改查解决方案。这不仅可以...

    C#开发经验技巧宝典

    0956 C#中附加单文件SQL Server数据库 559 0957 备份SQL Server数据库 559 0958 还原SQL Server数据库 560 0959 开启SQL Server数据库服务 561 0960 断开SQL Server数据库服务 562 0961 如何判断SQL ...

    C#开发典型模块大全

    11.2.4 获取指定目录下的所有文件及文件夹 265 11.2.5 Word操作技术 266 11.2.6 进度条的显示 266 11.2.7 对ListView控件中的项进行排序 267 11.3 设计过程 267 11.3.1 主窗体预览 267 11.3.2 批量复制...

    明日科技C#示例源码

    实例021 从DataGridView控件中拖放数据到TreeView控件 78 第3章 图形图像及多媒体应用 实例022 生成中文验证码 86 实例023 生成图片缩略图 88 实例024 不失真压缩图片 90 实例025 批量图像格式...

    C# winform典型系统开发模板

     11.2.4 获取指定目录下的所有文件及文件夹 265  11.2.5 Word操作技术 266  11.2.6 进度条的显示 266  11.2.7 对ListView控件中的项进行排序 267  11.3 设计过程 267  11.3.1 主窗体预览 267...

    以MDF方式读取数据库

    MDF文件是SQL Server数据库的主要数据文件,它包含了数据库的所有数据和对象,如表、索引、存储过程等。通常,MDF文件与LDF日志文件一起工作,以确保数据的一致性和完整性。在SQL Server中,MDF文件是数据库实例的...

    C#.net_经典编程例子400个

    262 实例181 修改文件及目录的名字 264 6.4 文件目录 265 实例182 获得临时文件目录 265 实例183 获取应用程序所在目录 266 实例184 得到系统当前目录 266 实例185 在程序中改变当前...

    C#开发典型模块大全(光盘)

    11.2.4 获取指定目录下的所有文件及文件夹 11.2.5 Word操作技术 11.2.6 进度条的显示 11.2.7 对ListView控件中的项进行排序 11.3 设计过程 11.3.1 主窗体预览 11.3.2 批量复制、剪切文件 11.3.3 批量复制、剪切...

Global site tag (gtag.js) - Google Analytics