本文实例讲述了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+"nn"+"您可以手动附加数据");
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#程序设计有所帮助。