问大伙一个问题:
如果我在循环里有一个 filldataSet的方法,我并没有显式的Open,close数据库链接
请问这样的话 ,filldataset方法会不会在没个循环都open,close,如果是这样的话, 会不会影响效率 .
如果我在循环里有一个 filldataSet的方法,我并没有显式的Open,close数据库链接
请问这样的话 ,filldataset方法会不会在没个循环都open,close,如果是这样的话, 会不会影响效率 .
conn.Open();
for(int i=0;i<1000;i++)da.Fill(ds);
conn.Close();
Fill方法自动维护conn状态会在使用前开启使用后关闭
而如果使用前conn已经开启的话使用后Fill方法会维持开启状态
你可以在循环前,OPEN
在循环后CLOSE
这样就安全了,不用担心喽
这样太影响效率了.
SqlDataAdapter oDA = new SqlDataAdapter(sCmd, conn);
oDA.Fill(oDDDD,"do");
類似的操作的時候
他的連結是OPEN的
取出資料以後他又會把它CLOSE 為了安全.
這個是.NET 裡面FILL方法的內部代碼
IDbConnection connection1 = DbDataAdapter.GetConnection(command, "Fill");
ConnectionState state1 = ConnectionState.Open;
if (MissingSchemaAction.AddWithKey == base.MissingSchemaAction)
{
behavior |= CommandBehavior.KeyInfo;
}
int num1 = 0;
try
{
try
{
DbDataAdapter.QuietOpen(connection1, out state1);
using (IDataReader reader1 = command.ExecuteReader(behavior | CommandBehavior.SequentialAccess))
{
if (data is DataTable)
{
return this.Fill((DataTable) data, reader1);
}
return this.Fill((DataSet) data, srcTable, reader1, startRecord, maxRecords);
}
}
finally
{
DbDataAdapter.QuietClose(connection1, state1);
}
}
catch
{
throw;
}
return num1;