谁能给我解释一下这段代码??

jeannie94621 2005-12-13 05:32:38

1。请问调用一次ExecuteSP()的时候,是不是和数据库建立一次连接(oledbconnection),还是再程序中多次调用ExecuteSP()只打开一个数据库连接??

2。数据库连接oledbconnection再这儿为何没有关闭那?

private string GetConnectString()

{ string myConnectStr="Provider=MSDAORA.1;User ID=mall;Data Source=mall;Password=mall";

return myConnectStr;
}


//' DataAccess.CreateCommand()
// Creates a command object from a SQL string parameters, and the command type.
public OleDbCommand CreateCommand(string SQLText, OleDbParameter[] Param, CommandType SQLCmdType)
{
OleDbConnection myConnection= new OleDbConnection (GetConnectString());

OleDbCommand myCommand = new OleDbCommand (SQLText, myConnection);
myCommand.CommandType = SQLCmdType;
if (Param!=null)
{
foreach (OleDbParameter ParamTemp in Param)
{
myCommand.Parameters.Add(ParamTemp);
}
}
try
{
myConnection.Open();
return myCommand;
}

catch (Exception e)
{
LogError(e);
}
return null;
}



//' DataAccess.ExecuteSP()
// Executes a stored procedure with parameters.Fills a DataTable object, returns True if success.
public bool ExecuteSP(string SProcName, OleDbParameter[] Param, DataSet MyDataSet)
{
OleDbCommand myCommand= CreateCommand(SProcName, Param, CommandType.StoredProcedure);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter (myCommand);

try
{
myDataAdapter.Fill(MyDataSet);
return true;
}
catch (Exception e)
{
LogError(e);
return false;
}


}
...全文
110 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Iveny 2005-12-14
  • 打赏
  • 举报
回复
帮顶,呵呵!
jeannie94621 2005-12-14
  • 打赏
  • 举报
回复
自己解决了,加了个 finally
{
myConnection.Close();
}
能不能给自己加分呀?或者都来顶,来着给分。
jeannie94621 2005-12-14
  • 打赏
  • 举报
回复
我得意思是别的程序多次调用ExecuteSP()时。OleDbConnection myConnection是不是因为是私有变量,只连接一次?
jeannie94621 2005-12-14
  • 打赏
  • 举报
回复
大师请给我改改这段话应该怎么改那
charles_y 2005-12-14
  • 打赏
  • 举报
回复
晕,都说了
这段程序根本就不需要打开,所以也不需要关闭



public OleDbCommand CreateCommand(string SQLText, OleDbParameter[] Param, CommandType SQLCmdType)
{
OleDbConnection myConnection= new OleDbConnection (GetConnectString());

OleDbCommand myCommand = new OleDbCommand (SQLText, myConnection);
myCommand.CommandType = SQLCmdType;
if (Param!=null)
{
foreach (OleDbParameter ParamTemp in Param)
{
myCommand.Parameters.Add(ParamTemp);
}
}
try
{
myConnection.Open();
return myCommand;
}

catch (Exception e)
{
LogError(e);
}
return null;
}


改为
SQLCmdType)
{
OleDbConnection myConnection= new OleDbConnection (GetConnectString());

OleDbCommand myCommand = new OleDbCommand (SQLText, myConnection);
myCommand.CommandType = SQLCmdType;
if (Param!=null)
{
foreach (OleDbParameter ParamTemp in Param)
{
myCommand.Parameters.Add(ParamTemp);
}
}

return myCommand;
}
是最好的解决方法
charles_y 2005-12-13
  • 打赏
  • 举报
回复
1 最好每次打开的时候都新建连接


2 没有关闭是错误的或者说这儿根本不需要打开,SqlDataAdapter自己Fill的时候会打开数据库

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧