我正做一个建库的安装包,有一个问题,就是如果我在建库失败后,要弹出一个消息框通知客户失败,然后安装程序终止,怎么做啊,下面是我的源代码 ,,在线等,急
public partial class DBInstaller : Installer
{
public DBInstaller()
{
InitializeComponent();
}
public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
short signErr;
GreateDataBase(signErr);
if (signErr != 1)
{
return;
}
} private void GreateDataBase(out short signErr)
{
signErr = 1;
string strCon=
"data source=127.0.0.1;initial catalog=master;user id=sa;password=";
SqlConnection con = new SqlConnection(strCon);
SqlCommand cmd;
String strSql =
"select count(*) from master..sysdatabases where name = 'MCIMS '";
try
{
con.Open(); }
catch (Exception ex)
{
signErr = 0;
return;
}
//删库
SqlDataAdapter dpt = new SqlDataAdapter(strSql, con);
DataTable dt;
dpt.Fill(dt);
if (dt.Rows.Count != 0)
{
strSql = "DROP DATABASE MCIMS";
cmd = new SqlCommand(strSql);
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
signErr = 0;
return;
}
}
//建库
try
{
strSql = "CREATE DATABASE MCIMS";
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
signErr = 0;
return;
} }
public partial class DBInstaller : Installer
{
public DBInstaller()
{
InitializeComponent();
}
public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
short signErr;
GreateDataBase(signErr);
if (signErr != 1)
{
return;
}
} private void GreateDataBase(out short signErr)
{
signErr = 1;
string strCon=
"data source=127.0.0.1;initial catalog=master;user id=sa;password=";
SqlConnection con = new SqlConnection(strCon);
SqlCommand cmd;
String strSql =
"select count(*) from master..sysdatabases where name = 'MCIMS '";
try
{
con.Open(); }
catch (Exception ex)
{
signErr = 0;
return;
}
//删库
SqlDataAdapter dpt = new SqlDataAdapter(strSql, con);
DataTable dt;
dpt.Fill(dt);
if (dt.Rows.Count != 0)
{
strSql = "DROP DATABASE MCIMS";
cmd = new SqlCommand(strSql);
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
signErr = 0;
return;
}
}
//建库
try
{
strSql = "CREATE DATABASE MCIMS";
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
signErr = 0;
return;
} }
创建 newDB在开发人员测试用的数据库服务器上对 db 的数据进行清理工作(或是初始化), 直至数据是要发布到服务器上的状态.
对 db进行备分 ,设备份文件名为 db_data_20071017.bak对数据库服务器的 newDB 进行恢复操作,选中设备为 db_data_20071017.bak既知手工操作有了步骤,那么,用程序安装时也很简单
1, c#程序执行sql server的backup语句对数据库备份
2, 执行newDB的建库语句
3, 用restore语句对newDB进行恢复.这样的操作数据是最干净,也最容易排错的.当然,还有其它方法, 比如生成SQL脚本,但某些表如果有初始记录时就比较麻烦.
或者采用dts导入导出,在SQL SERVER间复制对象和数据
还可以是停掉SQL服务把ldf和mdf文件复制出来,然后到数据库服务器去附加, 这种做法比较麻烦.
{
strSql = "CREATE DATABASE MCIMS";
cmd.ExecuteNonQuery();
}
这里要重新定义cmd. 建库没那么简单吧? 你得定义NAME, FILENAME, SIZE, MAXSIZE, FILEGROWTH这些东东,
如果建库失败, 在catch可以弹出消息框, 通知用户, 然后可以在finally里关闭数据库连接.