之前是做脚本语言开发的,现在需要用c#做一个桌面程序,c#其实有很多orm,只是自己不熟悉c#,想多学习下,就自己写了,当然由于初次写,有些地方不足。
class Dbhelper
{
private static MySqlConnection _prtconn = null;
private static string constructorString = "server=127.0.0.1;User Id=root;password=123456;Database=puruite_client_development";
#region open and close conn
/// <summary>
/// 链接mysql
/// </summary>
/// <returns></returns>
private static MySqlConnection GetConn()
{
_prtconn = new MySqlConnection(constructorString);
return _prtconn;
}
/// <summary>
/// 打开链接
/// </summary>
private static void OpenConn()
{
if (_prtconn.State == ConnectionState.Closed)
{
_prtconn.Open();
} else
{
_prtconn.Close();
_prtconn.Open();
}
}
/// <summary>
/// 关闭数据库连接
/// </summary>
/// <param name="prtconn">数据库链接</param>
private static void CloseConn()
{
if (_prtconn.State == ConnectionState.Open)
{
_prtconn.Close();
_prtconn.Dispose();
}
}
#endregion
#region select DataSet
/// <summary>
///
/// </summary>
/// <param name="sqlStr">sql</param>
/// <returns></returns>
public static DataSet GetDataSetSql(string sqlStr)
{
return GetDataSet(sqlStr, null, CommandType.Text);
}
/// <summary>
/// 查询,返回DataSet对象
/// </summary>
/// <param name="sqlStr">sql</param>
/// <param name="paras">参数</param>
/// <returns></returns>
public static DataSet GetDataSetSqlParameter(string sqlStr, MySqlParameter[] paras)
{
return GetDataSet(sqlStr, paras, CommandType.Text);
}
/// <summary>
/// 查询,返回DataSet对象
/// </summary>
/// <param name="sqlStr">sql</param>
/// <param name="paras">参数</param>
/// <param name="type"></param>
/// <returns></returns>
private static DataSet GetDataSet(string sqlStr, MySqlParameter[] paras, CommandType type)
{
DataSet ds = new DataSet();
using (MySqlConnection conn = GetConn())
{
MySqlDataAdapter ada = new MySqlDataAdapter(sqlStr, conn);
ada.SelectCommand.CommandType = type;
if (paras != null)
{
ada.SelectCommand.Parameters.AddRange(paras);
}
ada.Fill(ds);
}
return ds;
}
#endregion
#region select count
public static int GetCountByCondition(string tableName, Dictionary<string, object> conditions)
{
if (tableName == null)
{
return 0;
}
if(conditions.Count == 0)
{
return 0;
}
string conditionStr = GetUpdateConditions(conditions);
string sqlStr = string.Format("SELECT COUNT(id) FROM {0} WHERE {1}", tableName, conditionStr);
List<MySqlParameter> paras = new List<MySqlParameter>();
foreach (KeyValuePair<string, object> item in conditions)
{
paras.Add(SetParam("@" + item.Key, item.Value));
}
return Convert.ToInt32(GetExecuteScalarSqlParameter(sqlStr, paras.ToArray()));
}
/// <summary>
/// 返回所有数据总数
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public static int GetCount(string tableName)
{
if (tableName == null)
{
return 0;
}
string sqlStr = string.Format("SELECT COUNT(id) FROM {0}", tableName);
return Convert.ToInt32(GetExecuteScalarSql(sqlStr));
}
/// <summary>
/// 查询 返回ExecuteScalar 对象
/// </summary>
/// <param name="sqlStr">sql</param>
/// <returns></returns>
public static object GetExecuteScalarSql(String sqlStr)
{
return GetExecuteScalar(sqlStr, null, CommandType.Text);
}
/// <summary>
/// 查询 返回ExecuteScalar 对象
/// </summary>
/// <param name="sqlStr">sql</param>
/// <param name="paras">参数</param>
/// <returns></returns>
public static object GetExecuteScalarSqlParameter(String sqlStr, MySqlParameter[] paras)
{
return GetExecuteScalar(sqlStr, paras, CommandType.Text);
}
/// <summary>
/// 查询 返回ExecuteScalar 对象
/// </summary>
/// <param name="sqlStr">sql</param>
/// <param name="paras">参数</param>
/// <param name="type"></param>
/// <returns></returns>
private static object GetExecuteScalar(string sqlStr, MySqlParameter[] paras, CommandType type)
{
object res = null;
using (MySqlConnection conn = GetConn())
{
// 创建操作对象
MySqlCommand comd = conn.CreateCommand();
// 定义操作类型
comd.CommandType = type;
// 定义操作语句
comd.CommandText = sqlStr;
// 定义执行语句参数
if (paras != null)
{
comd.Parameters.AddRange(paras);
}
// 打开数据库连接
OpenConn();
// 执行操作
res = comd.ExecuteScalar();
//关闭数据库连接,释放操作对象
comd.Dispose();
CloseConn();
}
return res;
}
#endregion
#region select row by id
/// <summary>
/// 根据id 获取1行数据
/// </summary>
/// <param name="tableName">表</param>
/// <param name="id">id</param>
/// <param name="columns">要查询的字段,为了提高查询效率,禁止用*</param>
/// <returns></returns>
public static DataRow GetRowById(string tableName, long id, string[] columns)
{
if (tableName == null)
{
return null;
}
if (columns.Length == 0)
{
return null;
}
string sqlStr = string.Format("SELECT {0} FROM {1} WHERE id={2}", string.Join(",", columns), tableName, id);
DataTable dataTable = GetDataTableSql(sqlStr);
if (dataTable.Rows.Count > 0)
{
return dataTable.Rows[0];
}
return null;
}
/// <summary>
/// 根据id获取1行数据
/// </summary>
/// <typeparam name="T">表</typeparam>
/// <param name="obj"></param>
/// <param name="tableName"></param>
/// <param name="id"></param>
/// <returns></returns>
public static DataRow GetRowById<T>(T obj, string tableName, long id)
{
if (tableName == null)
{
return null;
}
string fields = GetFields(obj);
if (fields == null)
{
return null;
}
string sqlStr = string.Format("SELECT {0} FROM {1} WHERE id={2}", fields, tableName, id);
DataTable dataTable = GetDataTableSql(sqlStr);
if (dataTable.Rows.Count > 0)
{
return dataTable.Rows[0];
}
return null;
}
#endregion
#region select row by condition
/// <summary>
/// 根据条件获取1行数据
/// </summary>
/// <param name="tableName"></param>
/// <param name="columns"></param>
/// <param name="conditions"></param>
/// <returns></returns>
public static DataRow GetRow(string tableName, string[] columns, Dictionary<string, object> conditions)
{
if (tableName == null)
{
return null;
}
if (columns.Length == 0)
{
return null;
}
if (conditions.Count == 0)
{
return null;
}
string conditionStr = GetUpdateConditions(conditions);
string sqlStr = string.Format("SELECT {0} FROM {1} WHERE {2}", string.Join(",", columns), tableName, conditionStr);
List<MySqlParameter> paras = new List<MySqlParameter>();
foreach (KeyValuePair<string, object> item in conditions)
{
paras.Add(SetParam("@" + item.Key, item.Value));
}
DataTable dataTable = GetDataTableSqlParameter(sqlStr, paras.ToArray());
if (dataTable.Rows.Count > 0)
{
return dataTable.Rows[0];
}
return null;
}
/// <summary>
/// 根据条件获取1行数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <param name="tableName"></param>
/// <param name="conditions"></param>
/// <returns></returns>
public static DataRow GetRow<T>(T obj, string tableName, Dictionary<string, object> conditions)
{
if (tableName == null)
{
return null;
}
if (conditions.Count == 0)
{
return null;
}
string fields = GetFields(obj);
if (fields == null)
{
return null;
}
string conditionStr = GetUpdateConditions(conditions);
string sqlStr = string.Format("SELECT {0} FROM {1} WHERE {2}", fields, tableName, conditionStr);
List<MySqlParameter> paras = new List<MySqlParameter>();
foreach (KeyValuePair<string, object> item in conditions)
{
paras.Add(SetParam("@" + item.Key, item.Value));
}
DataTable dataTable = GetDataTableSqlParameter(sqlStr, paras.ToArray());
if (dataTable.Rows.Count > 0)
{
return dataTable.Rows[0];
}
return null;
}
#endregion
#region select rows by condition
/// <summary>
/// 获取所有数据
/// </summary>
/// <param name="tableName">表</param>
/// <param name="columns">要查询的字段,为了提高查询效率,禁止用*</param>
/// <returns></returns>
public static DataTable GetRows(string tableName, string[] columns, Dictionary<string, object> conditions)
{
if (tableName == null)
{
return null;
}
if (columns.Length == 0)
{
return null;
}
if (conditions.Count == 0)
{
return null;
}
string conditionStr = GetUpdateConditions(conditions);
string sqlStr = string.Format("SELECT {0} FROM {1} WHERE {2}", string.Join(",", columns), tableName, conditionStr);
List<MySqlParameter> paras = new List<MySqlParameter>();
foreach (KeyValuePair<string, object> item in conditions)
{
paras.Add(SetParam("@" + item.Key, item.Value));
}
return GetDataTableSqlParameter(sqlStr, paras.ToArray());
}
/// <summary>
/// 获取所有数据
/// </summary>
/// <param name="tableName">表</param>
/// <param name="columns">要查询的字段,为了提高查询效率,禁止用*</param>
/// <returns></returns>
public static DataTable GetRowsPagination(string tableName, string[] columns, Dictionary<string, object> conditions, int currentPage, int perPage)
{
if (tableName == null)
{
return null;
}
if (columns.Length == 0)
{
return null;
}
if (conditions.Count == 0)
{
return null;
}
string conditionStr = GetUpdateConditions(conditions);
int offsetPage = (currentPage - 1) * perPage;
string sqlStr = string.Format("SELECT {0} FROM {1} WHERE {2} LIMIT {3}, {4}", string.Join(",", columns), tableName, conditionStr, offsetPage, perPage);
List<MySqlParameter> paras = new List<MySqlParameter>();
foreach (KeyValuePair<string, object> item in conditions)
{
paras.Add(SetParam("@" + item.Key, item.Value));
}
return GetDataTableSqlParameter(sqlStr, paras.ToArray());
}
/// <summary>
/// 获取所有数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public static DataTable GetRows<T>(T obj, string tableName, Dictionary<string, object> conditions)
{
if (tableName == null)
{
return null;
}
string fields = GetFields(obj);
if (fields == null)
{
return null;
}
if (conditions.Count == 0)
{
return null;
}
string conditionStr = GetUpdateConditions(conditions);
string sqlStr = string.Format("SELECT {0} FROM {1} WHERE {2}", fields, tableName, conditionStr);
List<MySqlParameter> paras = new List<MySqlParameter>();
foreach (KeyValuePair<string, object> item in conditions)
{
paras.Add(SetParam("@" + item.Key, item.Value));
}
return GetDataTableSqlParameter(sqlStr, paras.ToArray());
}
/// <summary>
/// 获取所有数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public static DataTable GetRowsPagination<T>(T obj, string tableName, Dictionary<string, object> conditions, int currentPage, int perPage)
{
if (tableName == null)
{
return null;
}
string fields = GetFields(obj);
if (fields == null)
{
return null;
}
if (conditions.Count == 0)
{
return null;
}
string conditionStr = GetUpdateConditions(conditions);
int offsetPage = (currentPage - 1) * perPage;
string sqlStr = string.Format("SELECT {0} FROM {1} WHERE {2} LIMIT {3}, {4}", fields, tableName, conditionStr, offsetPage, perPage);
List<MySqlParameter> paras = new List<MySqlParameter>();
foreach (KeyValuePair<string, object> item in conditions)
{
paras.Add(SetParam("@" + item.Key, item.Value));
}
return GetDataTableSqlParameter(sqlStr, paras.ToArray());
}
#endregion
#region select all row
/// <summary>
/// 获取所有数据
/// </summary>
/// <param name="tableName">表</param>
/// <param name="columns">要查询的字段,为了提高查询效率,禁止用*</param>
/// <returns></returns>
public static DataTable GetAll(string tableName, string[] columns)
{
if (tableName == null)
{
return null;
}
if(columns.Length == 0)
{
return null;
}
string sqlStr = string.Format("SELECT {0} FROM {1}", string.Join(",", columns), tableName);
return GetDataTableSql(sqlStr);
}
/// <summary>
/// 获取所有数据
/// </summary>
/// <param name="tableName">表</param>
/// <param name="columns">要查询的字段,为了提高查询效率,禁止用*</param>
/// <returns></returns>
public static DataTable GetAllPagination(string tableName, string[] columns, int currentPage, int perPage)
{
if (tableName == null)
{
return null;
}
if (columns.Length == 0)
{
return null;
}
int offsetPage = (currentPage - 1) * perPage;
string sqlStr = string.Format("SELECT {0} FROM {1} LIMIT {2}, {3}", string.Join(",", columns), tableName, offsetPage, perPage);
return GetDataTableSql(sqlStr);
}
/// <summary>
/// 获取所有数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public static DataTable GetAll<T>(T obj, string tableName)
{
if (tableName == null)
{
return null;
}
string fields = GetFields(obj);
if (fields == null)
{
return null;
}
string sqlStr = string.Format("SELECT {0} FROM {1}", fields, tableName);
return GetDataTableSql(sqlStr);
}
/// <summary>
/// 获取所有数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public static DataTable GetAllPagination<T>(T obj, string tableName, int currentPage, int perPage)
{
if (tableName == null)
{
return null;
}
string fields = GetFields(obj);
if (fields == null)
{
return null;
}
int offsetPage = (currentPage - 1) * perPage;
string sqlStr = string.Format("SELECT {0} FROM {1} LIMIT {2}, {3}", fields, tableName, offsetPage, perPage);
return GetDataTableSql(sqlStr);
}
#endregion
#region select DataTable
/// <summary>
/// 查询 返回DataTable 对象
/// </summary>
/// <param name="sqlStr">sql</param>
/// <returns></returns>
public static DataTable GetDataTableSql(String sqlStr)
{
return GetDataTable(sqlStr, null, CommandType.Text);
}
/// <summary>
/// 查询 返回DataTable 对象
/// </summary>
/// <param name="sqlStr">sql</param>
/// <param name="paras">参数</param>
/// <returns></returns>
public static DataTable GetDataTableSqlParameter(String sqlStr, MySqlParameter[] paras)
{
return GetDataTable(sqlStr, paras, CommandType.Text);
}
/// <summary>
/// 查询 返回DataTable 对象
/// </summary>
/// <param name="sqlStr">sql</param>
/// <param name="paras">参数</param>
/// <param name="type"></param>
/// <returns></returns>
private static DataTable GetDataTable(string sqlStr, MySqlParameter[] paras, CommandType type)
{
DataTable dt = new DataTable();
using (MySqlConnection conn = GetConn())
{
MySqlDataAdapter ada = new MySqlDataAdapter(sqlStr, conn);
ada.SelectCommand.CommandType = type;
if (paras != null)
{
ada.SelectCommand.Parameters.AddRange(paras);
}
ada.Fill(dt);
}
return dt;
}
#endregion
#region insert
/// <summary>
/// 添加单条数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public static int QueryInsert<T>(T obj, string tableName)
{
if (tableName == null)
{
return 0;
}
string fields = GetFields(obj);
if (fields == null)
{
return 0;
}
string values = GetValues(obj);
if (values == null)
{
return 0;
}
// insert 语句
string sqlStr = string.Format("INSERT INTO {0} ( {1} ) VALUES( {2} )", tableName, fields, values);
// 字段列表
List<MySqlParameter> paras = new List<MySqlParameter>();
foreach (var item in obj.GetType().GetProperties())
{
if (item.GetValue(obj) != null)
{
paras.Add(SetParam("@" + item.Name, item.GetValue(obj)));
}
}
return QuerySqlParameter(sqlStr, paras.ToArray());
}
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public static long QueryInsertReturnId<T>(T obj, string tableName)
{
if (tableName == null)
{
return 0;
}
string fields = GetFields(obj);
if (fields == null)
{
return 0;
}
string values = GetValues(obj);
if (values == null)
{
return 0;
}
// insert 语句
string sqlStr = string.Format("INSERT INTO {0} ( {1} ) VALUES( {2} )", tableName, fields, values);
// 字段列表
List<MySqlParameter> paras = new List<MySqlParameter>();
foreach (var item in obj.GetType().GetProperties())
{
if (item.GetValue(obj) != null)
{
paras.Add(SetParam("@" + item.Name, item.GetValue(obj)));
}
}
long id = 0;
using (MySqlConnection conn = GetConn())
{
// 创建操作对象
MySqlCommand comd = conn.CreateCommand();
// 定义操作类型
comd.CommandType = CommandType.Text;
// 定义操作语句
comd.CommandText = sqlStr;
// 定义执行语句参数
if (paras != null)
{
comd.Parameters.AddRange(paras.ToArray());
}
// 打开数据库连接
OpenConn();
// 执行操作
comd.ExecuteNonQuery();
id = comd.LastInsertedId;
//关闭数据库连接,释放操作对象
comd.Dispose();
CloseConn();
}
return id;
}
#endregion
#region update
/// <summary>
/// 根据id更新指定行数据
/// </summary>
/// <param name="tableName"></param>
/// <param name="updateColumns"></param>
/// <param name="id"></param>
/// <returns></returns>
public static int QueryUpdateById(string tableName, Dictionary<string, object> updateColumns, long id)
{
if (tableName == null)
{
return 0;
}
if (updateColumns.Count == 0)
{
return 0;
}
if (id == 0)
{
return 0;
}
string values = GetUpdateValues(updateColumns);
string sqlStr = string.Format("UPDATE {0} SET {1} WHERE id={2}", tableName, values, id);
List<MySqlParameter> paras = new List<MySqlParameter>();
foreach (KeyValuePair<string, object> item in updateColumns)
{
paras.Add(SetParam("@" + item.Key, item.Value));
}
return QuerySqlParameter(sqlStr, paras.ToArray());
}
/// <summary>
/// 根据id更新
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <param name="tableName"></param>
/// <param name="id"></param>
/// <returns></returns>
public static int QueryUpdateById<T>(T obj, string tableName, long id)
{
if (tableName == null)
{
return 0;
}
if (id == 0)
{
return 0;
}
string values = GetUpdateValues(obj);
string sqlStr = string.Format("UPDATE {0} SET {1} WHERE id={2}", tableName, values, id);
List<MySqlParameter> paras = new List<MySqlParameter>();
foreach (var item in obj.GetType().GetProperties())
{
if (item.GetValue(obj) != null)
{
paras.Add(SetParam("@" + item.Name, item.GetValue(obj)));
}
}
return QuerySqlParameter(sqlStr, paras.ToArray());
}
/// <summary>
/// 根据条件更新
/// </summary>
/// <param name="tableName"></param>
/// <param name="updateColumns"></param>
/// <param name="conditions"></param>
/// <returns></returns>
public static int QueryUpdate(string tableName, Dictionary<string, object> updateColumns, Dictionary<string, object> conditions)
{
if (tableName == null)
{
return 0;
}
if (updateColumns.Count == 0)
{
return 0;
}
if (conditions.Count == 0)
{
return 0;
}
string values = GetUpdateValues(updateColumns);
string conditionStr = GetUpdateConditions(conditions);
string sqlStr = string.Format("UPDATE {0} SET {1} WHERE {2}", tableName, values, conditionStr);
List<MySqlParameter> paras = new List<MySqlParameter>();
foreach (KeyValuePair<string, object> item in updateColumns)
{
paras.Add(SetParam("@" + item.Key, item.Value));
}
foreach (KeyValuePair<string, object> item in conditions)
{
paras.Add(SetParam("@" + item.Key, item.Value));
}
return QuerySqlParameter(sqlStr, paras.ToArray());
}
/// <summary>
/// 根据条件更新
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <param name="tableName"></param>
/// <param name="conditions"></param>
/// <returns></returns>
public static int QueryUpdate<T>(T obj, string tableName, Dictionary<string, object> conditions)
{
if (tableName == null)
{
return 0;
}
if (conditions.Count == 0)
{
return 0;
}
string conditionStr = GetUpdateConditions(conditions);
string values = GetUpdateValues(obj);
string sqlStr = string.Format("UPDATE {0} SET {1} WHERE {2}", tableName, values, conditionStr);
List<MySqlParameter> paras = new List<MySqlParameter>();
foreach (var item in obj.GetType().GetProperties())
{
if (item.GetValue(obj) != null)
{
paras.Add(SetParam("@" + item.Name, item.GetValue(obj)));
}
}
foreach (KeyValuePair<string, object> item in conditions)
{
paras.Add(SetParam("@" + item.Key, item.Value));
}
return QuerySqlParameter(sqlStr, paras.ToArray());
}
#endregion
#region delete
/// <summary>
/// 根据id 删除
/// </summary>
/// <param name="tableName"></param>
/// <param name="id"></param>
/// <returns></returns>
public static int QueryDeleteById(string tableName, long id)
{
if (tableName == null)
{
return 0;
}
if (id == 0)
{
return 0;
}
string sqlStr = string.Format("DELETE FROM {0} where id={1}", tableName, id);
return QuerySql(sqlStr);
}
/// <summary>
/// 根据条件删除
/// </summary>
/// <param name="tableName"></param>
/// <param name="conditions"></param>
/// <returns></returns>
public static int QueryDelete(string tableName, Dictionary<string, object> conditions)
{
if (tableName == null)
{
return 0;
}
if (conditions.Count == 0)
{
return 0;
}
string conditionStr = GetUpdateConditions(conditions);
string sqlStr = string.Format("DELETE FROM {0} where {1}", tableName, conditionStr);
List<MySqlParameter> paras = new List<MySqlParameter>();
foreach (KeyValuePair<string, object> item in conditions)
{
paras.Add(SetParam("@" + item.Key, item.Value));
}
return QuerySqlParameter(sqlStr, paras.ToArray());
}
#endregion
#region insert update delete
/// <summary>
/// 纯sql语句
/// </summary>
/// <param name="sqlStr">sql</param>
/// <returns></returns>
public static int QuerySql(string sqlStr)
{
return query(sqlStr, null, CommandType.Text);
}
/// <summary>
/// 参数sql语句
/// </summary>
/// <param name="sqlStr">sql</param>
/// <param name="paras">参数</param>
/// <returns></returns>
public static int QuerySqlParameter(string sqlStr, MySqlParameter[] paras)
{
return query(sqlStr, paras, CommandType.Text);
}
/// <summary>
/// 执行sql
/// </summary>
/// <param name="sql_str">sql语句</param>
/// <returns>受影响的行数</returns>
private static int query(string sqlStr, MySqlParameter[] paras, CommandType type)
{
int res = 0;
// 创建数据库连接对象
using (MySqlConnection conn = GetConn())
{
// 创建操作对象
MySqlCommand comd = conn.CreateCommand();
// 定义操作类型
comd.CommandType = type;
// 定义操作语句
comd.CommandText = sqlStr;
// 定义执行语句参数
if (paras != null)
{
comd.Parameters.AddRange(paras);
}
// 打开数据库连接
OpenConn();
// 执行操作
res = comd.ExecuteNonQuery();
//关闭数据库连接,释放操作对象
comd.Dispose();
CloseConn();
}
return res;
}
#endregion
#region others
/// <summary>
/// 实例化MySqlParameter
/// </summary>
/// <param name="param"></param>
/// <param name="value"></param>
/// <returns></returns>
public static MySqlParameter SetParam(string param, object value)
{
return new MySqlParameter(param, value);
}
/// <summary>
/// 拼接insert的数据字段
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
private static string GetFields<T>(T obj)
{
if (obj == null)
{
return string.Empty;
}
return string.Join(",", obj.GetType().GetProperties().Select(p => p.Name).ToList());
}
/// <summary>
/// 拼接insert的数据值字段
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
private static string GetValues<T>(T obj)
{
if (obj == null)
{
return string.Empty;
}
return string.Join(",", obj.GetType().GetProperties().Select(p => "@" + p.Name).ToList());
}
/// <summary>
/// 拼接update的数据字段
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
private static string GetUpdateValues<T>(T obj)
{
if (obj == null)
{
return string.Empty;
}
// 不更新created_at, 需要没张表都有这个字段和updated_at字段
return string.Join(",", obj.GetType().GetProperties().Where(p => (p.Name != "id" && p.Name != "created_at")).Select(p => p.Name + "=@" + p.Name).ToList());
}
private static string GetUpdateValues(Dictionary<string, object> updateColumns)
{
if (updateColumns == null)
{
return string.Empty;
}
List<string> items = new List<string>();
foreach (string itemKey in updateColumns.Keys)
{
items.Add(itemKey + "=@" + itemKey);
}
return string.Join(", ", items);
}
/// <summary>
/// 拼接where语句
/// </summary>
/// <param name="conditions"></param>
/// <returns></returns>
private static string GetUpdateConditions(Dictionary<string, object> conditions)
{
if(conditions == null)
{
return string.Empty;
}
List<string> items = new List<string>();
foreach (string itemKey in conditions.Keys)
{
items.Add(itemKey + "=@" + itemKey);
}
if (items.Count == 1)
{
return string.Join(" ", items);
}
return string.Join(" AND ", items);
}
#endregion
}
本文介绍了一个简单的C# ORM框架实现,用于与MySQL数据库交互。包括数据库连接管理、查询、插入、更新、删除等基本操作,并提供了参数化查询和分页功能。

575

被折叠的 条评论
为什么被折叠?



