你确定 你的MyDb 对象没在别的地方使用过?
针对这种问题,你可以变通测试下的嘛。如果你说 SqlDataAdapter调用过后不用关闭 但却出现这种错误的话。
你可以在调用之前SqlDataAdapter 先 conopen(); 然后后面读出数据后再conclose();再试试结果。
1、如果这种测试通过了,那就说明刚才的有问题咯,就解决了。
2、如果这种测试也错,那就说明你MyDb 在其他地方有调用、实例等。是来自其他地方的问题
希望你测试成功!
举一个简单的例子:
public class DBOperate
{
static SqlConnection sqlConnection=new SqlConnection
(SystemConfigurationConfigurationSettingsAppSettings["ConnectionString"]);
public DBOperate()
{
}
//执行SQL语句,如Select
public static DataTable Select(string sql)
{
try
{
SqlDataAdapter sqlAdapter1 = new SqlDataAdapter(sql,
sqlConnection);
DataSet returns = new DataSet();
sqlAdapter1Fill(returns);
return returnsTables[0];
}
catch (Exception ex)
{
throw (ex);
}
finally
{
sqlConnectionClose();
}
}
//执行SQL语句,如UPDATE,INSERT等
public static void ExcSQL(string sql)
{
try
{
SqlCommand sqlCmd =new SqlCommand(sql,sqlConnection);
//if(sqlConnectionStateToString() == "closed")
sqlConnectionOpen();
sqlCmdExecuteNonQuery();
}
catch (Exception ex)
{
exToString();
}
finally
{
sqlConnectionClose();
}
}
}
using SystemData;
using SystemDataSqlClient;
//需要添加这两个引用
string SqlConStr = "Server=servername;database=Test;user id=userId;password=password;";
string sqlString="select from V-test;";
SqlConnection SqlCnt = new SqlConnection(SqlConStr);
SqlCntOpen();
SqlCommand SqlCmd = SqlCntCreateCommand();
SqlCmdCommandType = CommandTypeText;
SqlCmdCommandText = sqlString;
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(SqlCmd);
DataSet sqlDataSet = new DataSet();
sqlDataAdapterFill(sqlDataSet);
DataTable MyTable = sqlDataSetTables[0];
SqlCntClose();
SqlCntDispose();
这段代码执行完后,MyTable 就是执行了"select from V-test;"语句后返回的结果集
以上就是关于C# SqlDataAdapter DataTable 关闭数据库连接全部的内容,包括:C# SqlDataAdapter DataTable 关闭数据库连接、sqlserver数据库连接时,想把数据绑定封转成一个类的方法,返回dataTable类型、C#连接数据库,用DataGridview ,显示数据表,对表内容进行删除,添加,修改等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)