日期:2014-05-20  浏览次数:21188 次

请教一个 SqlConnection 的问题;
我的代码如:
using   (SqlConnection   myConnection   =   new   SqlConnection( "context   connection=true "))

然后
{
SqlDataReader   dr_1   =   GetCommonStartPrefix(TableName,   colName,   sb,   myConnection);

while   (dr_2.Read())
{
                //我想在这里获取一个SqlDataReader怎么处理?

}



------解决方案--------------------
不明白意思
while (dr_2.Read())
{
//我想在这里获取一个SqlDataReader怎么处理?

}

这里你不是已经取到了SqlDataReader了吗
------解决方案--------------------
while (dr_2.Read())
{
xx=dr_2[ "字段名字 "].ToString()

}
------解决方案--------------------
一样的啊
把如下的代码放 while 里就是了
SqlCommand newCommand = new SqlCommand( "sql... ", myConnection)
SqlDataReader myReader = newCommand.ExecuteReader()
------解决方案--------------------
如果我要把之前的datareader不colse掉怎么处理呢?
没有关系的
using 中这个花括号执行完会自动释放这个CONNECTION资源

第2个con 你完全可以不用USING来写
如果用的话也可以,嵌个套

using ()
{

using ()
{
}

}
------解决方案--------------------
SqlConnection myConnection = new SqlConnection( "context connection=true ");
SqlConnection myConnection1 = new SqlConnection( "context connection=true ");
myConnection1.Open();
myConnection.Open();
.......
SqlDataReader dr_2 = GetCommonStartPrefix(TableName, colName, sb, myConnection);
SqlDataReader dr_1;
while (dr_2.Read())
{
dr_1 = GetCommonStartPrefix(TableName, colName, sb, myConnection1 );
//dr_1操作
dr_1.Close();
}
myConnection1.Dispose();
myConnection.Dispose();

------解决方案--------------------
datareader 是保持连接的
除非这个释放了
除非不能用同一个 Connection 吧
------解决方案--------------------
用一个 connection 就是了
为什么要用两个
connection 如同道路
一条就够了
你可以在上面通过不同汽车(SqlCommand)运送不同的货物(执行Sql)
------解决方案--------------------
出错是由于你使用有问题
正确过程

string cnString = "Persist Security Info=False;User ID=sa;Password=;Initial Catalog=pubs;Server=.; ";
SqlConnection cn = new SqlConnection(cnString);
SqlConnection cn1 = new SqlConnection(cnString);
cn.Open();
cn1.Open();
SqlCommand cmd = new SqlCommand( "select * from authors ", cn);
SqlCommand cmd1;
SqlDataReader dr = cmd.ExecuteReader();
SqlDataReader dr1;
while (dr.Read())
{
cmd1 = new SqlCommand( "select * from titles ", cn1);
dr1 = cmd1.ExecuteReader();
Response.Write(dr1.HasRows);
dr1.Close();
}
dr.Close();
cn.Close();
cn1.Close();
------解决方案--------------------
You need to use try/catch blocks to make sure your connection,datareader and command are disposed/closed when an exception is thrown