请教一个 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