using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Text;

namespace AccessStudy.Core
{
    public interface IDbUtil
    {
        IDbConnection DbConnection { get; set; }

        /// <summary>
        /// 表是否存在
        /// </summary>
        bool HasDataTable(string dataTableName);

        /// <summary>
        /// 获取DataSet
        /// </summary>
        DataSet GetDataSet(string dataTableName);

        /// <summary>
        /// 获取DataSet
        /// </summary>
        DataSet GetDataSet(string sqlText, List<IDbDataParameter> parameters = null);

        /// <summary>
        /// 获取DataTable
        /// </summary>
        DataTable GetDataTable(string dataTableName);

        /// <summary>
        /// 获取DataTable
        /// </summary>
        DataTable GetDataTable(string sqlText, List<IDbDataParameter> parameters = null);

        /// <summary>
        /// 获取DataReader
        /// 切记:用完之后主动关闭连接
        /// </summary>
        DbDataReader GetDataReader(string dataTableName);

        /// <summary>
        /// 获取DataReader
        /// 切记:用完之后主动关闭连接
        /// </summary>
        DbDataReader GetDataReader(string sqlText, List<IDbDataParameter> parameters = null);

        /// <summary>
        /// 获取第一行第一列的值
        /// 不存在则为null
        /// </summary>
        object GetScalar(string sqlText, List<IDbDataParameter> parameters = null);

        /// <summary>
        /// 执行非查询语句
        /// </summary>
        /// <returns>受影响行数</returns>
        int ExecuteNonQuery(string sqlText, List<IDbDataParameter> parameters = null);

        /// <summary>
        /// 打开当前连接
        /// </summary>
        void OpenConnect();

        /// <summary>
        /// 关闭当前连接
        /// </summary>
        void CloseConnect();
    }
}