MySQL常用执行SQL方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Configuration;
//程序集 MySql.Data.dll, v6.9.8.0
using MySql.Data.MySqlClient;
using System.Data;

namespace SqlIsMySQL
{
    public class DbHelpMySql
    {
        //定义连接字符串;当第一次进入这个类的时候,就会给静态全局变量赋值
        public static string mysqlConnectString = ConfigurationManager.AppSettings["mysqlConnectString"];
        /// <summary>
        /// 获得最大的Id
        /// </summary>
        /// <param name="filedName">字段名称</param>
        /// <param name="tableName">表名称</param>
        /// <returns></returns>
        public static int GetMaxId(string filedName, string tableName)
        {
            string strSql = string.Format("select max({0}) +1 from {1} ", filedName, tableName);
            //简化释放资源,结束了括号自动释放资源
            using (MySqlConnection connection = new MySqlConnection(mysqlConnectString))
            {
                using (MySqlCommand cmd = new MySqlCommand(strSql, connection))
                {
                    try
                    {
                        //打开连接
                        connection.Open();
                        //执行语句超时时间设置为120s;默认是30s
                        cmd.CommandTimeout = 120;
                        //返回结果的第一行第一列的值
                        object obj = cmd.ExecuteScalar();
                        if (object.Equals(obj, null) || object.Equals(obj, System.DBNull.Value))
                            return 1;
                        else
                            return int.Parse(obj.ToString());
                    }
                    catch (MySqlException e)
                    {
                        //出现异常,关闭连接
                        connection.Close();
                        throw (e);
                    }

                }
            }
        }
        /// <summary>
        /// 判断是否存在
        /// </summary>
        /// <param name="strSql">需要执行的SQL语句</param>
        /// <returns></returns>
        public static bool isExist(string strSql)
        {
            using (MySqlConnection connection = new MySqlConnection(mysqlConnectString))
            {
                using (MySqlCommand cmd = new MySqlCommand(strSql, connection))
                {
                    try
                    {
                        connection.Open();
                        object obj = cmd.ExecuteScalar();
                        if (object.Equals(obj, null) || object.Equals(obj, System.DBNull.Value))
                            return false;
                        else
                            return true;
                    }
                    catch (MySqlException e)
                    {
                        connection.Close();
                        throw (e);
                    }
                }
            }
        }
        /// <summary>
        /// mysql执行查询SQL语句,不含有参数
        /// </summary>
        /// <param name="strSql">SQL语句</param>
        /// <returns></returns>
        public static DataTable ExcuteQuerySql(string strSql)
        {
            using (MySqlConnection connection = new MySqlConnection(mysqlConnectString))
            {
                using (MySqlDataAdapter cmd = new MySqlDataAdapter(strSql, connection))
                {
                    DataSet dataSet = new DataSet();
                    try
                    {
                        connection.Open();
                        cmd.Fill(dataSet, "ds");
                    }
                    catch (MySqlException e)
                    {
                        connection.Close();
                        throw (e);
                    }
                    return dataSet.Tables[0];
                }
            }
        }
        /// <summary>
        /// 执行update delete insert语句返回的参数。
        /// </summary>
        /// <param name="strSql"></param>
        /// <returns></returns>
        public static int ExcuteNonQuery(string strSql)
        {
            using (MySqlConnection connection = new MySqlConnection(mysqlConnectString))
            {
                using (MySqlCommand cmd = new MySqlCommand(strSql, connection))
                {
                    try
                    {
                        connection.Open();
                        cmd.CommandTimeout = 120;
                        //ExecuteNonQuery返回值的问题;如果是执行update delete insert语句,则返回影响的行数;
                        //执行其他类型的语句,则返回-1;例如select语句;发生回滚也返回-1
                        int rows = cmd.ExecuteNonQuery();
                        if (rows == -1)
                            return 0;
                        else
                            return rows;
                    }
                    catch (MySqlException e)
                    {
                        throw (e);
                    }                    
                }
            }
        }
        /// <summary>
        /// 执行带参数的SQL语句
        /// </summary>
        /// <param name="strSql">SQL语句</param>
        /// <param name="cmdParams">参数</param>
        /// <returns></returns>
        public static MySqlDataReader ExcuteNoQueryHasParam(string strSql,params MySqlParameter[] cmdParams)
        {
            using (MySqlConnection connection = new MySqlConnection(mysqlConnectString))
            {
                using (MySqlCommand cmd = new MySqlCommand())
                {
                    try
                    {
                        PrePareCommand(cmd, connection, null, strSql, cmdParams);
                        MySqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                        cmd.Parameters.Clear();
                        return myReader;
                    }
                    catch (MySqlException e)
                    {
                        throw (e);
                    }                   
                }
            }
        }
        /// <summary>
        /// 添加参数
        /// </summary>
        /// <param name="cmd"></param>
        /// <param name="con"></param>
        /// <param name="trans"></param>
        /// <param name="strSql"></param>
        /// <param name="cmdParams"></param>
        public static void PrePareCommand(MySqlCommand cmd,MySqlConnection con,MySqlTransaction trans,string strSql,MySqlParameter[] cmdParams)
        {
            if (con.State != ConnectionState.Open)
                con.Open();
            cmd.Connection = con;
            cmd.CommandText = strSql;
            if (trans != null)
                cmd.Transaction = trans;
            cmd.CommandType = CommandType.Text;
            if (cmdParams != null)
            {
                foreach (MySqlParameter param in cmdParams)
                {
                    if ((param.Direction == ParameterDirection.InputOutput || param.Direction == ParameterDirection.Input) && param.Value != null)
                        param.Value = DBNull.Value;
                    cmd.Parameters.Add(param);
                }
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值