说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

关于Dataset关连接的问题

编辑:说三道四文库 发布时间:2018-05-28 09:45
HTML文档下载 WORD文档下载 PDF文档下载
private static string CONSTR = ConfigurationManager.AppSettings["ConnectingText"];


 public static DataSet ExecuteByDataSet(string sql, string TableName, params SqlParameter[] sp)
    {
        SqlConnection conn = new SqlConnection(ConnectingText);
            try
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlDataAdapter da = new SqlDataAdapter();
                if (sp != null)
                {
                    foreach (SqlParameter s in sp)
                    {
                        cmd.Parameters.Add(s);
                    }
                }
                da.SelectCommand = cmd;
                DataSet ds = new DataSet();
                da.Fill(ds, TableName);
                return ds;

            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                conn.Close();
                conn.Dispose();
            }
    }

 
我这么做 可以及时的关闭连接吗?
为什么不见效呢?
这是我配置文件中的:
<add key="Constr" value="Enlist=true;Pooling=true;Max Pool Size=512;Min Pool Size=0;Connection Lifetime=300;packet size=10000;Server=.;Initial Catalog=DataBase;User ID=sa;Password=;"/>

在本地可以连上,换个机子就提示 SQL Err:26
楼主这样写.已经关闭了连接!

设置太多了
去掉几个再试试
<add key="Constr" value="Pooling=true;Max Pool Size=512;Min Pool Size=0;;Server=IP;Initial Catalog=DataBase;User ID=sa;Password=;"/>
执行哪一句出错?有没有更详细的出错信息
并非所有路径都有返回值
DataSet ds = new DataSet(); 
写在函数前面,最后再
 return ds; 
SqlConnection conn = new SqlConnection(ConnectingText); 
放进try里边
把finally 去掉
try语句会自动释放
//添加 using System.Web.Configuration;


SqlConnection conn = new SqlConnection(WebConfigurationManager.Connectionstrings["ConStr"].Connectionstrings)             
SqlCommand cmd = new SqlCommand(sql, conn); 
cmd.CommandType = CommandType.StoredProcedure; 
SqlDataAdapter da = new SqlDataAdapter(); 
Dataset ds = new Dataset();
conn.open()
try
{
if(Connection.state = true)
{
if (sp != null) 
 { 
foreach (SqlParameter s in sp) 
 { 
   cmd.Parameters.Add(s); 
 } 
                } 
                da.SelectCommand = cmd; 
                DataSet ds = new DataSet(); 
                da.Fill(ds, TableName); 
                return ds; 
}
            } 
            catch (Exception e) 
            { 
                throw e; 
            } 
            finally 
            { 
                conn.Close(); 
                conn.Dispose(); 
            } 
    } 
//Config中
去掉AppSettings节点,
<Connectionstring>
  <add name = "ConStr" Connectionstrings = "Server=..;database = ..,UserID= ..; Pwd = ..;"/>
</Connectionstring>

适当的用using语句即可:
            using (SqlConnection conn = new SqlConnection(ConnectingText))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlDataAdapter da = new SqlDataAdapter();
                if (sp != null)
                {
                    foreach (SqlParameter s in sp)
                    {
                        cmd.Parameters.Add(s);
                    }
                }
                da.SelectCommand = cmd;
                DataSet ds = new DataSet();
                da.Fill(ds, TableName);

                cmd.Parameters.Clear();
                cmd.Dispose();

                return ds;
            }
你的连接字符串里的lifetime是不是需要去掉啊?
9 楼很不错,是SqlHelper.cs 的扩展

建议楼主用。

程序运行没问题..就是想让数据库及时关连接--压
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘