1、
Me.DataGrid1.DataSource = SqlHelper.ExecuteReader(sqlstr, CommandType.Text, "Select * From NewsSort")
Me.DataBind()Me.DataGrid2.DataSource = SqlHelper.ExecuteReader(sqlstr, CommandType.Text, "Select * From News")
Me.DataBind()上面的代码SqlHelper是否要打开两次数据库,如果是,是否有办法让它打开一次数据库读出两张数据表后再关闭数据库(比如一个网页要读出三张表,总不可能打开三次数据库吧)???2、
SqlHelper嵌套怎么做???

解决方案 »

  1.   

    你的这个问题可以用 Lostinet 写的 SqlScope 来解决。www.lostinet.com
      

  2.   

    public DataSet GetListById(string strUserId)
    {
    SqlConnection conn = ConnectionBuilder.GetConnection();
    string  str = @"select * from tab_user where user_id like '%"+strUserId+"%'"; 
                DataSet ds = null;
    ds = SqlHelper.ExecuteDataset(conn,CommandType.Text,str);
    return ds;
    }
    你的conn在哪?
      

  3.   

    http://www.hidotnet.com/documents/sqlhelper/hiDotNet.Data.SqlHelperMembers.html
    几张表fill到一个dataset中
      

  4.   

    其实这样也没有什么不可以的,你要是用在多张表关联时可以考虑改一下直接返回一个dataset,里面有多张表..
      

  5.   

    connection.Open();
    SqlHelper.ExecuteReader(connection, CommandType.Text, "Select * From NewsSort")SqlHelper.ExecuteReader(connection, CommandType.Text, "Select * From News")
    connection.Close();
      

  6.   

    看来一部分sqlHelper的源代码,发现sqlHelper的处理机制还是很好的。ExecuteReader,ExecuteDataSet等方法都有一个带connection作为参数的重载版本,如果使用这个版本的函数,就能自己控制数据库联接的开和关。sqlHelper的机制是这样的,如果connection为nothing,则建立新的connection,然后打开,访问数据库,最后关闭。如果connection不为nothing,则使用此connection,如其已打开,则访问数据库,然后依然保持连接,如果其是关闭的,则打开其连接,访问数据库,然后关闭。所以照你的写法,会有2次数据库连接的打开和关闭操作。要只使用一个connection来操作的话,使用类似Jarod() 列出的代码:
    connection.Open
    SqlHelper.ExecuteReader(connection, CommandType.Text, "Select * From NewsSort")SqlHelper.ExecuteReader(connection, CommandType.Text, "Select * From News")
    connection.Close另外,使用事务的方法也类似这样。什么叫sqlHelper嵌套?
      

  7.   

    我是自己写的一个 !!  
    感觉sqlHelper 如果执行失败的时候! 那么资源无法释放!
      

  8.   

    我的conn在 Web.config 文件里。
    我懂得了用手动打开和关闭数据库连接比较好,十分感谢大伙的帮助,只是嵌套还是不太懂(就是父表跟子表在一个DataGrid上显示),是否也要自己写DataSet。