entity framework(EF) 直接执行数据库命令并返回DataTable 参数化sql语句

entity framework(EF) 直接执行数据库命令


//调用方法
        private void button1_Click(object sender, EventArgs e)
        {
            string id = "1";
            string sql = "select * from table1 where id = @id";

            #region mysql数据库参数类型
            var args = new DbParameter[] {
                                      new SqlParameter { ParameterName = "id", Value = id},
                                  };
            #endregion

            #region mysql数据库参数类型
            //var args = new DbParameter[] {
            //                          new OdbcParameter { ParameterName = "id", Value = id},
            //                      };

       //     var args = new DbParameter[] {
       //                               new MySqlParameter { ParameterName = "id", Value = "1"},
       //                 };
            #endregion

            #region access数据库参数类型
            //var args = new DbParameter[] {
            //                          new OleDbParameter { ParameterName = "id", Value = id},
            //                      };
            #endregion
            MessageBox.Show(SqlQuery(sql, args).Count().ToString());
        }
        /// 
        /// 执行带参数sql语句返回数据列表
        /// 
        /// 泛型
        /// sql语句
        /// 参数
        /// 数据列表
        public List SqlQuery(string sql, DbParameter[] args)
        {
            if (string.IsNullOrEmpty(sql))
                return new List();
            try
            {
                using (itlogo_integralEntities db = new itlogo_integralEntities())
                {
                    return db.Database.SqlQuery(sql, args).ToList();
                }
            }
            catch (Exception ex)
            {
                return new List();
            }
        }
        /// 
        /// 执行不带参数sql语句返回数据列表
        /// 
        /// 
        /// 
        /// 
        public static List SqlQuery(string sql)
        {
            if (string.IsNullOrEmpty(sql))
                return new List();
            try
            {
                using (itlogo_integralEntities db = new itlogo_integralEntities())
                {
                    return db.Database.SqlQuery(sql).ToList();
                }
            }
            catch (Exception ex)
            {
                return new List();
            }
        }
        /// 
        /// 执行带参数sql语句返回受影响行数
        /// 
        /// 
        /// 
        /// 
        public static int ExecuteSqlCommand(string sql, DbParameter[] args)
        {
            if (string.IsNullOrEmpty(sql))
                return 0;
            try
            {
                using (itlogo_integralEntities db = new itlogo_integralEntities())
                {
                    return db.Database.ExecuteSqlCommand(sql, args);
                }
            }
            catch (Exception ex)
            {
                return 0;
            }
        }
        /// 
        /// 执行sql语句返回收影响行数
        /// 
        /// 
        /// 
        public static int ExecuteSqlCommand(string sql)
        {
            if (string.IsNullOrEmpty(sql))
                return 0;
            try
            {
                using (itlogo_integralEntities db = new itlogo_integralEntities())
                {
                    return db.Database.ExecuteSqlCommand(sql);
                }
            }
            catch (Exception ex)
            {
                return 0;
            }
        }

        

执行sql语句返回datatable

#region 执行sql语句返回datatable

        public DataTable SqlQueryForDataTatable(Database database, string sql)
        {

            SqlConnection conn = new System.Data.SqlClient.SqlConnection();
            conn.ConnectionString = database.Connection.ConnectionString;
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
            
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandText = sql;

            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            DataTable table = new DataTable();
            adapter.Fill(table);

            conn.Close();//连接需要关闭
            conn.Dispose();
            return table;
        }

        public DataTable SqlQueryForDataTatable(Database database, string sql, DbParameter[] parameters)
        {
            SqlConnection conn = new System.Data.SqlClient.SqlConnection();
            conn.ConnectionString = database.Connection.ConnectionString;
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandText = sql;

            if (parameters != null && parameters.Length > 0)
            {
                foreach (var item in parameters)
                {
                    cmd.Parameters.Add(item);
                }
            }

            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            DataTable table = new DataTable();
            adapter.Fill(table);
            return table;
        }
        #endregion



参考网址:

直接执行数据库命令

http://www.cnblogs.com/mend/archive/2012/06/11/2544599.html


使用dynamic linq 解决自定义查询的若干弊端

http://www.cnblogs.com/sword-successful/p/3318540.html


MVC3+EF4.1学习系列(十一)----EF4.1常见的问题解决(返回datatable)

http://www.cnblogs.com/wlflovenet/archive/2011/12/30/EF11.html

你可能感兴趣的:(Entity,Framework)