使用C# 开发的Winform 程序,使用的是三层结构模式。觉得很好,不怕数据库的连接数量的限制问题。但在开发过程中遇到程序需要创建数据库临时表的问题。可是三层结构模式下数据层在返回后,即断开数据库的连接。这样就没有办法建立临时表了。请各位高手指点一二。谢谢。

解决方案 »

  1.   

    使用C# 开发的Winform 程序,使用的是三层结构模式。觉得很好,不怕数据库的连接数量的限制问题。
    这个和使用基层没什么直接关系吧?
      

  2.   

            /// <summary>
            /// 执行SQL语句,返回影响的记录数,不需要传入SqlParameter
            /// </summary>
            /// <param name="connectionString">连接字符串</param>
            /// <param name="SQLString">SQL语句</param>
            /// <returns>影响的记录数</returns>
            public static int ExecuteSqlNocmdParms(string connectionString, string SQLString)
            {
                try
                {
                    using (SqlConnection conn = new SqlConnection(connectionString))
                    {
                        conn.Open();
                        SqlCommand cmd = new SqlCommand(SQLString, conn);
                        int val = cmd.ExecuteNonQuery();
                        return val;
                    }
                }
                catch (SqlException ex)
                {
                    throw ex;
                }
            }
    =========================
    这个是我数据层的代码片段,可以看到连接马上就释放了。
      

  3.   

    有关系吗?
    也就是因为ado.net本身是断开式链接,所以你每次取出来的数据,都是临时的内存表.何言不能建.
      

  4.   

    说对了,我就是这个意思
    我的意思是在数据库里建立临时表“create table #tablename",让后程序再去这个临时表(#tablename)做某些查询等工作。比如我的中间层代码片段:
    namespace BLL
    {
        public class CustomerInfo
        {
            public void ReadAllCustomer()
            {
                string strSQL = "create table #tablename...";//创建一个临时表,代码有些省略
                Sqlserver.ExecuteSqlTran(Sqlserver.connectionString, strSQL);//在数据层执行。注意执行该行后,数据库连接断开。     //问题是,我在接下来是没办法使用该临时表。
       //这是MS sQL帮助文档原话:所有其它本地临时表在当前会话结束时自动除去。(即上面那行执行完毕,连接断开后,临时表就消失。)
                return;
            }
    //数据层,执行SQL语句
    namespace SQLserverDAL
    {
        public class Sqlserver
        {
            public static void ExecuteSqlTran(string connectionString, string strSQL)
            {
                using (SqlConnection conn = new SqlConnection(connectionString)) //执行完毕,断开连接
                {
                   .....
      

  5.   

    可是三层结构模式下数据层在返回后,即断开数据库的连接。这样就没有办法建立临时表了。 没看懂。dataset