C#创建数据库及附加数据库的操作方法
本文实例讲述了C#创建数据库及附加数据库的操作方法。分享给大家供大家参考,具体如下:
///<summary>
///附加数据库方法
///</summary>
///<paramname="strSql">连接数据库字符串,连接master系统数据库</param>
///<paramname="DataName">数据库名字</param>
///<paramname="strMdf">数据库文件MDF的路径</param>
///<paramname="strLdf">数据库文件LDF的路径</param>
///<paramname="path">安装目录</param>
privatevoidCreateDataBase(stringstrSql,stringDataName,stringstrMdf,stringstrLdf,stringpath)
{
SqlConnectionmyConn=newSqlConnection(strSql);
Stringstr=null;
try
{
str="EXECsp_attach_db@dbname='"+DataName+"',@filename1='"+strMdf+"',@filename2='"+strLdf+"'";
SqlCommandmyCommand=newSqlCommand(str,myConn);
myConn.Open();
myCommand.ExecuteNonQuery();
MessageBox.Show("数据库安装成功!点击确定继续");//需UsingSystem.Windows.Forms
}
catch(Exceptione)
{
MessageBox.Show("数据库安装失败!"+e.Message+"\n\n"+"您可以手动附加数据");
System.Diagnostics.Process.Start(path);//打开安装目录
}
finally
{
myConn.Close();
}
}
publicoverridevoidInstall(System.Collections.IDictionarystateSaver)
{
stringserver=this.Context.Parameters["server"];//服务器名称
stringuid=this.Context.Parameters["user"];//SQlServer用户名
stringpwd=this.Context.Parameters["pwd"];//密码
stringpath=this.Context.Parameters["targetdir"];//安装目录
stringstrSql="server="+server+";uid="+uid+";pwd="+pwd+";database=master";//连接数据库字符串
stringDataName="JXC";//数据库名
stringstrMdf=path+@"JXC.mdf";//MDF文件路径,这里需注意文件名要与刚添加的数据库文件名一样!
stringstrLdf=path+@"jxc_log.ldf";//LDF文件路径
base.Install(stateSaver);
this.CreateDataBase(strSql,DataName,strMdf,strLdf,path);//开始创建数据库
}
///<summary>
///测试连接
///</summary>
///<paramname="serverName"></param>
///<paramname="dbName"></param>
///<paramname="userName"></param>
///<paramname="password"></param>
privateSqlConnectionTestConnection(stringserverName,stringdbName,stringuserName,stringpassword)
{
stringconnectionString=GetConnectionString(serverName,dbName,userName,password);
SqlConnectionconnection=newSqlConnection(connectionString);
try
{
if(connection.State!=ConnectionState.Open)
{
connection.Open();
}
returnconnection;
}
catch
{
CloseConnection(connection);
thrownewInstallException("安装失败!\n数据库配置有误,请正确配置信息!");
}
}
///<summary>
///得到连接字符串
///</summary>
///<paramname="serverName"></param>
///<paramname="dbName"></param>
///<paramname="userName"></param>
///<paramname="password"></param>
///<returns></returns>
privatestringGetConnectionString(stringserverName,stringdbName,stringuserName,stringpassword)
{
stringconnectionString="DataSource={0};InitialCatalog={1};UserID={2};Password={3}";
connectionString=string.Format(connectionString,serverName,dbName,userName,password);
returnconnectionString;
}
///<summary>
///创建数据库
///</summary>
///<paramname="serverName"></param>
///<paramname="dbName"></param>
///<paramname="userName"></param>
///<paramname="password"></param>
///<paramname="connection"></param>
///<paramname="stateSaver"></param>
publicintCreateDataBase(SqlConnectionconnection)
{
intresult=-1;
connection.ChangeDatabase("master");
stringcreateDBSql=@"ifExists(select1fromsysdatabaseswhere[name]=N'{0}')
begin
dropdatabase{0}
end
GO
CREATEDATABASE{0}";
createDBSql=string.Format(createDBSql,_dbName);
//因为有Go在SQLCommand中不认识,所以以Go为分隔符取sql语句
char[]split=newchar[]{'G','O'};
string[]sqlList=createDBSql.Split(split);
SqlCommandcommand=null;
try
{
command=connection.CreateCommand();
command.CommandType=System.Data.CommandType.Text;
foreach(stringsqlIteminsqlList)
{
if(sqlItem.Length>2)
{
command.CommandText=sqlItem;
result=command.ExecuteNonQuery();
}
}
returnresult;
}
catch
{
CloseConnection(connection);
command.Dispose();
thrownewInstallException("安装失败!\n数据库配置不正确!");
}
}
///<summary>
///分隔SQL语句
///</summary>
///<paramname="sql"></param>
///<returns></returns>
privatestring[]splitSql(stringsql)
{
Regexregex=newRegex("^GO",RegexOptions.IgnoreCase|RegexOptions.Multiline);
string[]sqlList=regex.Split(sql.ToUpper());
returnsqlList;
}
更多关于C#相关内容感兴趣的读者可查看本站专题:《C#程序设计之线程使用技巧总结》、《C#操作Excel技巧总结》、《C#中XML文件操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程》
希望本文所述对大家C#程序设计有所帮助。