做毕业设计
遇到数据库恢复问题
数据库是SQL Server 2000
提示:“因为数据库正在使用,所以未能获得对数据库的排它访问权”
以前用Delphi写程序时也遇到过这个问题
当时解决了
现在遇到类似问题我估计是程序中还有数据库连接存在
但是不知道对于ADO.NET如何使数据库连接结束
比如:
SqlConnection con = new SqlConnection("Data Source=Server;Initial Catalog=test;User ID=sa;Password=123");
SqlCommand com = new SqlCommand("select * from login", con);
con.Open();
try
{
SqlDataReader dr = com.ExecuteReader()
if ( dr.Read() )
{
//代码
}
else
{
//代码
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
dr.Close();
con.Close();
}如果要在这段代码运行之后备份数据库
需要再做那些工作才能完全不连接到数据库
是上面的提示不出现
大家帮帮忙
谢谢了
遇到数据库恢复问题
数据库是SQL Server 2000
提示:“因为数据库正在使用,所以未能获得对数据库的排它访问权”
以前用Delphi写程序时也遇到过这个问题
当时解决了
现在遇到类似问题我估计是程序中还有数据库连接存在
但是不知道对于ADO.NET如何使数据库连接结束
比如:
SqlConnection con = new SqlConnection("Data Source=Server;Initial Catalog=test;User ID=sa;Password=123");
SqlCommand com = new SqlCommand("select * from login", con);
con.Open();
try
{
SqlDataReader dr = com.ExecuteReader()
if ( dr.Read() )
{
//代码
}
else
{
//代码
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
dr.Close();
con.Close();
}如果要在这段代码运行之后备份数据库
需要再做那些工作才能完全不连接到数据库
是上面的提示不出现
大家帮帮忙
谢谢了
----------------
感觉有些情况下还是用SqlDataReader更好一点
效率更高吧
做毕业设计
一个简单的中学成绩管理程序
先是出现登陆框(loginFrm)
上面的代码就是登陆框中一个确定Button的Click事件处理代码
登陆结束
进入主界面(mainFrm)
然后选择数据恢复
就出现上面我说的提示错误执行方式
Application.Run(new loginFrm());
Application.Run(new mainFrm());数据恢复代码
private void btnRestore_Click(object sender, System.EventArgs e)
{
openDlg.ShowDialog();
if( openDlg.FileName.Length != 0)
{
if(MessageBox.Show(this, "您确定要恢复数据库吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
string sqlStr = "RESTORE DATABASE test FROM DISK = \'" + openDlg.FileName + "\' WITH REPLACE";
SqlConnection con = new SqlConnection(mainFrm.conNoDB);
SqlCommand com = new SqlCommand(sqlStr, con);
con.Open();
try
{
com.ExecuteNonQuery();
MessageBox.Show("数据库已成功恢复!");
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
con.Close();
}
}
openDlg.FileName = "";
}
换master好了
二处问题
一处像antoniusguo(anton)说的
另一处在连接池上
看了这篇文章
http://www.mikecat.net/blogview.asp?logID=1265
需要把连接字符串改为
"Data Source=Server;Initial Catalog=test;User ID=sa;Password=123;Pooling=False"
加上Pooling=False谢谢大家帮忙