簡單,實用,留存。
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CarHailing.Base
{
/// <summary>
/// 資料庫幫助類
/// </summary>
public class SqlHelp
{
/// <summary>
/// 建立一個已開啟的連線
/// </summary>
/// <returns></returns>
private static SqlConnection CreateConn()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
conn.Open();
return conn;
} /// <summary>
/// 執行sql語句,返回受影響的行數
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static int ExecuteNonQuery(string sql)
{
return ExecuteNonQuery(sql, null);
} /// <summary>
/// 執行sql語句,返回受影響的行數
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static int ExecuteNonQuery(string sql, SqlParameter[] ps)
{
SqlConnection conn = CreateConn();
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
if (ps != null)
{
cmd.Parameters.AddRange(ps);
}
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
return ;
}
finally
{
conn.Close();
}
} /// <summary>
/// 執行sql語句,返回一個結果表
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static DataTable ExecuteSelectDataTable(string sql)
{
return ExecuteSelectDataTable(sql, null);
} /// <summary>
/// 執行sql語句,返回一個結果表
/// </summary>
/// <param name="sql"></param>
/// <param name="ps"></param>
/// <returns></returns>
public static DataTable ExecuteSelectDataTable(string sql, SqlParameter[] ps = null)
{ SqlConnection conn = CreateConn();
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
if (ps != null)
{
cmd.Parameters.AddRange(ps);
}
//SqlDataAdapter sda = new SqlDataAdapter(cmd);
SqlDataReader read = cmd.ExecuteReader();
DataTable table = new DataTable();
table.Load(read);
//DataSet ds = new DataSet();
//sda.Fill(ds);
return table;
}
finally
{
conn.Close();
}
} /// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>decimal
public static DataTable ExecuteSelectPageDataTable(string sql, ref SqlParameter[] ps)
{
SqlConnection conn = CreateConn();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.CommandType = CommandType.StoredProcedure;
try
{
cmd.Parameters.AddRange(ps);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds);
return ds.Tables[];
}
catch (SqlException ex)
{
throw ex;
}
finally
{
conn.Close();
}
} //public static SqlDataReader ExecuteReader(string cmdText, CommandType cmdType, params SqlParameter[] cmdParms)
//{
// SqlCommand cmd = new SqlCommand();
// SqlConnection conn = CreateConn(); // try
// {
// ProCommand(cmd, conn, cmdText, cmdType, cmdParms);
// SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
// //cmd.Parameters.Clear();//放到這裡,返回引數會被清空。
// return rdr;
// }
// catch
// {
// conn.Close();
// throw;
// }
//} /// <summary>
/// 分頁讀取資料
/// </summary>
/// <param name="query">select查詢語句</param>
/// <param name="pageSize">每頁顯示資料數</param>
/// <param name="PageIndex">當前頁碼</param>
/// <param name="dt">儲存資料的DataTable例項</param>
public static void PageDataTable(string query, int pageSize, int PageIndex, DataTable dt)
{
//讀取資料的開始索引
long startIndex = (PageIndex - ) * pageSize;
//讀取資料的結束索引
long endIndex = PageIndex * pageSize - ;
//DataReader讀取的當前資料行的索引
long readToIndex = -;
using (SqlConnection conn = CreateConn())
{
SqlCommand cmd = new SqlCommand(query, conn);
//conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
//資料來源中的列數
int cols = dr.VisibleFieldCount;
//構造DataTable結構
for (int i = ; i < cols; i++)
{
dt.Columns.Add(new DataColumn(dr.GetName(i), dr.GetFieldType(i)));
}
//讀取資料,將資料一行一行新增到DataTable
while (dr.Read())
{
readToIndex++;
//當DataReader指標在開始索引和結束索引閉區間時才讀取資料構造DataRow
//並新增到DataTable
if (readToIndex >= startIndex && readToIndex <= endIndex)
{
DataRow row = dt.NewRow();
for (int i = ; i < cols; i++)
{
row[i] = dr[i];
}
dt.Rows.Add(row);
}
}
dr.Close();
}
}
}
}