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的原因?怎么解决
展开
 我来答
忘头粒精色g
2011-07-17 · 超过15用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:40.6万
展开全部
你确定 你的MyDb 对象没在别的地方使用过?
针对这种问题,你可以变通测试下的嘛。如果你说 SqlDataAdapter调用过后不用关闭 但却出现这种错误的话。
你可以在调用之前SqlDataAdapter 先 con.open(); 然后后面读出数据后再con.close();再试试结果。
1、如果这种测试通过了,那就说明刚才的有问题咯,就解决了。
2、如果这种测试也错,那就说明你MyDb 在其他地方有调用、实例等。是来自其他地方的问题
希望你测试成功!
追问
确认没有调用的,你说的方法试过了,我最后先把所有打开该数据库连接的进程全部kill后可以删除,说明还是有进程在用,奇怪了
追答
嗯,那就用这个方法呗。!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孙中吕
2011-07-17 · 专注C/S架构开发框架技术研究
孙中吕
采纳数:435 获赞数:788

向TA提问 私信TA
展开全部
好像SqlDataAdapter.Fill后会自动关闭连接的,如果需要可以做次判断:
if (conn.State != ConnectionState.Closed)
conn.Close();

提示数据库正在使用是有在线连接。需要从SQL Management内删除。
追问
我的没有作为在线服务器,而且程序里面只有一个指向那个数据库的连接,判断已经关闭了
追答
看你的代码没问题的,是不是有其它地方有连接
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
渠甲锦赤甜0t
2011-07-19 · 贡献了超过141个回答
知道答主
回答量:141
采纳率:0%
帮助的人:53.5万
展开全部
数据库是 服务在运行就不可以删除,只要停了数据库服务就可以删
追问
只能说不赞同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
2512werty
2011-07-17 · 超过12用户采纳过TA的回答
知道答主
回答量:119
采纳率:100%
帮助的人:36.7万
展开全部
con.close()
自己不熟,为什么不在网上copy代码呢
追问
SqlDataAdapter会自动关闭con,这个问题,我试过
追答
删除db ,动作比较大,删除其他东东看看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式