C# SqlDataAdapter DataTable 关闭数据库连接
Stringstr="selectnamefromsysobjectswheretype='U'andname<>'dtproperties'";SqlConnectio...
String str = "select name from sysobjects where type= 'U ' and name<>'dtproperties'";
SqlConnection con = new SqlConnection("Server=localhost\\SQLExpress;database=MyDb;UID=sa;Password=sa");
try
{
tableList.DataSource = null;//listbox
tableList.Items.Clear();
SqlDataAdapter MyAp = new SqlDataAdapter(str, con);
DataTable TableN = new DataTable("sysobjects");
MyAp.Fill(TableN);
tableList.DataSource = TableN.DefaultView;
tableList.DisplayMember = "name";
tableList.ValueMember = "name";
}
catch (Exception Err)
{
MessageBox.Show(Err.Message, "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
在同一个程序里面要删除MyDb的时候为什么总是提示数据库正在使用,是SqlDataAdapter的原因?怎么解决 展开
SqlConnection con = new SqlConnection("Server=localhost\\SQLExpress;database=MyDb;UID=sa;Password=sa");
try
{
tableList.DataSource = null;//listbox
tableList.Items.Clear();
SqlDataAdapter MyAp = new SqlDataAdapter(str, con);
DataTable TableN = new DataTable("sysobjects");
MyAp.Fill(TableN);
tableList.DataSource = TableN.DefaultView;
tableList.DisplayMember = "name";
tableList.ValueMember = "name";
}
catch (Exception Err)
{
MessageBox.Show(Err.Message, "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
在同一个程序里面要删除MyDb的时候为什么总是提示数据库正在使用,是SqlDataAdapter的原因?怎么解决 展开
4个回答
展开全部
你确定 你的MyDb 对象没在别的地方使用过?
针对这种问题,你可以变通测试下的嘛。如果你说 SqlDataAdapter调用过后不用关闭 但却出现这种错误的话。
你可以在调用之前SqlDataAdapter 先 con.open(); 然后后面读出数据后再con.close();再试试结果。
1、如果这种测试通过了,那就说明刚才的有问题咯,就解决了。
2、如果这种测试也错,那就说明你MyDb 在其他地方有调用、实例等。是来自其他地方的问题
希望你测试成功!
针对这种问题,你可以变通测试下的嘛。如果你说 SqlDataAdapter调用过后不用关闭 但却出现这种错误的话。
你可以在调用之前SqlDataAdapter 先 con.open(); 然后后面读出数据后再con.close();再试试结果。
1、如果这种测试通过了,那就说明刚才的有问题咯,就解决了。
2、如果这种测试也错,那就说明你MyDb 在其他地方有调用、实例等。是来自其他地方的问题
希望你测试成功!
追问
确认没有调用的,你说的方法试过了,我最后先把所有打开该数据库连接的进程全部kill后可以删除,说明还是有进程在用,奇怪了
追答
嗯,那就用这个方法呗。!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好像SqlDataAdapter.Fill后会自动关闭连接的,如果需要可以做次判断:
if (conn.State != ConnectionState.Closed)
conn.Close();
提示数据库正在使用是有在线连接。需要从SQL Management内删除。
if (conn.State != ConnectionState.Closed)
conn.Close();
提示数据库正在使用是有在线连接。需要从SQL Management内删除。
追问
我的没有作为在线服务器,而且程序里面只有一个指向那个数据库的连接,判断已经关闭了
追答
看你的代码没问题的,是不是有其它地方有连接
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数据库是 服务在运行就不可以删除,只要停了数据库服务就可以删
追问
只能说不赞同
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
con.close()
自己不熟,为什么不在网上copy代码呢
自己不熟,为什么不在网上copy代码呢
追问
SqlDataAdapter会自动关闭con,这个问题,我试过
追答
删除db ,动作比较大,删除其他东东看看。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询