首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

ADO.NET来补充小弟我点基础知识吧

2013-08-06 
ADO.NET来补充我点基础知识吧。public static DataSet GetDataSet(string stringSql){DataSet ds new Dat

ADO.NET来补充我点基础知识吧。

        public static DataSet GetDataSet(string stringSql)
        {
            DataSet ds = new DataSet();
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                SqlDataAdapter adapter = new SqlDataAdapter();
                adapter.SelectCommand = new SqlCommand(stringSql, conn);
                adapter.Fill(ds);
            }
            return ds;
        }
        public static int ExecuteScalar(string stringSql)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand(stringSql, conn))
                {
                    try
                    {
                        conn.Open();
                        object obj = cmd.ExecuteScalar();
                        int i = Convert.ToInt32(obj);
                        return i;
                    }


                    catch (System.Data.SqlClient.SqlException ex)
                    {
                        conn.Close();
                        throw ex;
                    }
                }
            }
        }




好吧执行查询的时候没有Open怎么也可以查询?
还有什么时候用 using (SqlCommand cmd = new SqlCommand(stringSql, conn))
                {

                 }
[解决办法]
SqlDataAdapter  是不需要 open的

在不需要返回结果集或需要返回SqlDataReader
都可以用SqlCommand cmd = new SqlCommand(stringSql, conn)

cmd.ExecuteNonQuery();
cmd.ExecuteReader();
[解决办法]
任何一个 DbDataAdapter 都会自动执行 Dbconnection 的 Open 语句。

你只要写 using (SqlConnection .... 就行了,完全没有任何必要去写 using (SqlCommand .... 这里的using。写了除了让你的程序变慢一些,我没有发现有什么作用。这个 cmd 交给GC 去处理就行了,用不着画蛇添足地调用 Dispose()。

你无需写 try...catch。当出现异常,第一个 using 自然就做了这些事情,你写了catch部分反而是让第一个 using 白写了。

热点排行