应用场合:因为经常更换操作系统,所以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();
}
}
分享到:
相关推荐
在SQL Server中,附加数据库是指将已存在的数据库文件(.mdf和.ldf)连接到实例上,以便可以访问和操作其中的数据。这个过程通常需要手动进行,但在开发或维护大型数据库时,自动附加数据库功能可以显著提高效率,...
读取目录是指程序能够遍历指定路径下的所有文件和子目录。在C#中,我们可以使用System.IO命名空间中的Directory和FileInfo类来实现。Directory类提供了GetFiles和GetDirectories方法来获取文件和目录,FileInfo类则...
在IT行业中,C#是一种广泛使用的编程...通过这个工具,开发者和数据库管理员可以轻松地批量附加数据库,节省时间,减少出错的可能性,提高工作效率。同时,它也展示了C#作为强大编程语言在数据库管理领域中的应用潜力。
其次,需要编写批量处理的逻辑,这通常涉及到文件系统的操作,如遍历指定文件夹内的所有SOLIDWORKS文件,获取文件列表。 然后,程序将通过循环逐一对这些文件调用eDrawings API提供的导出功能,将每个文件转换为PDF...
在“整体导入”和“单个导入”文件信息到数据库时,你可以批量处理文件夹中的所有文件,或者允许用户逐个选择。这可能涉及到批处理SQL命令或者多次执行单个命令。 综上所述,这个项目展示了如何使用C#和Access...
在本资源中,我们主要关注的是使用C#进行数据库操作的实践示例,这包括了与数据库的连接、数据查询以及可能的数据修改操作。资源包含了两个SQL查询文件(SQLQuery1.sql和SQLQuery2.sql)以及一个名为"Database"的...
本系统基于C#编程语言,结合Windows Forms(Form)技术,构建了一个功能强大的图书管理系统,涵盖了读者管理、借阅管理、图书管理、职工管理等多个核心模块,并融合了音乐播放、邮件发送以及数据库批量导出等附加...
- **附加数据库**: 使用`ALTER DATABASE` SQL命令,配合C#的SqlCommand执行,可以将数据库文件附加到SQL Server实例。 - **备份数据库**: 利用`BACKUP DATABASE` SQL语句,结合C#代码,可以制定备份策略,将数据库...
标题中的"C#读写Influxdb代码例子"指的是使用C#编程语言与InfluxDB数据库进行交互的示例代码。InfluxDB是一个专为时序数据设计的高性能、开源数据库,常用于监控、日志记录和大数据分析。下面将详细阐述如何在C#中...
接着,需要修改项目中的数据库连接字符串,确保系统能正确地连接到刚才附加的数据库,这样数据的读写操作才能顺利进行。 在课程设计中使用这样的项目,学生可以学习到以下C#相关的知识点: 1. **Windows Forms**:...
5. **附加数据库**:在SQL中,如果你有一个已经存在于其他位置的数据库文件,你可以使用`ATTACH DATABASE`命令将其连接到当前的SQL实例。这在数据迁移或备份恢复时非常有用。 6. **数据操作**:查询数据(SELECT)...
同时,配置文件(App.config)中的连接字符串也需要正确设置,以便DBContext能够连接到正确的数据库。 总的来说,利用C#的DBContext和泛型,结合RESTful设计模式,可以创建一套可复用的增删改查解决方案。这不仅可以...
0956 C#中附加单文件SQL Server数据库 559 0957 备份SQL Server数据库 559 0958 还原SQL Server数据库 560 0959 开启SQL Server数据库服务 561 0960 断开SQL Server数据库服务 562 0961 如何判断SQL ...
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 批量复制...
实例021 从DataGridView控件中拖放数据到TreeView控件 78 第3章 图形图像及多媒体应用 实例022 生成中文验证码 86 实例023 生成图片缩略图 88 实例024 不失真压缩图片 90 实例025 批量图像格式...
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文件是SQL Server数据库的主要数据文件,它包含了数据库的所有数据和对象,如表、索引、存储过程等。通常,MDF文件与LDF日志文件一起工作,以确保数据的一致性和完整性。在SQL Server中,MDF文件是数据库实例的...
262 实例181 修改文件及目录的名字 264 6.4 文件目录 265 实例182 获得临时文件目录 265 实例183 获取应用程序所在目录 266 实例184 得到系统当前目录 266 实例185 在程序中改变当前...
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 批量复制、剪切...