问题描述
SQLiteConnectioncon=newSQLiteConnection(conString);using(con){con.Oopen();...}Console.WriteLine(con.State.ToString);在代码中,用了using来处理con,让连接自动关闭,可是在实际使用中发现,在using之外,查看连接的状态还是打开的,怎么会这样呢?导致后面的代码,con.Open()出错。请问各位高手,该如何处理?
解决方案
解决方案二:
是不是应该这么用?
using(SQLiteConnectioncon=newSQLiteConnection(conString)){con.Oopen();...}
解决方案三:
理论上说,离开using之后会被自动调用Dispose,连接会被关闭,除非你没有实现SQLiteConnection.Dispose方法,或者SQLiteConnection.Dispose方法内部没有关闭连接,
解决方案四:
using(SQLiteConnectioncon=newSQLiteConnection(conString)){con.Oopen();...}
解决方案五:
using会自动释放后面括号中的内容,所以会释放连接的
解决方案六:
能的。它是一个代码域,出了代码域,就会自动关闭连接,并且释放资源
解决方案七:
首先要理解C#连接池的原理using等于最后执行Dispose,但是Dispose并非关闭连接而是释放连接到连接池所有如果你连接池的数量大于数据库支持的数量open就可能有问题,你可以找下有没有连接字符串参数来控制数量
解决方案八:
引用3楼sandy945的回复:
using(SQLiteConnectioncon=newSQLiteConnection(conString)){con.Oopen();...}
这样频繁的建立连接对象,是不是很消耗资源呢?本来我想建一个连接对象,然后不断的打开和关闭这该如何实现呢?谢谢
解决方案九:
using是自动释放对象。打开关闭这个不要太过于纠结于此,到时候如果需要调优的时候再考虑
解决方案十:
using(SqlConnectionconnection=newSqlConnection(ConnectionStrings)){}SqlConnection对象会自动关闭的哦。