ADO.NET FOR MySQL帮助类
- using System;
- using System.Collections;
- using System.Collections.Specialized;
- using System.Data;
- using MySql.Data.MySqlClient;
- using System.Configuration;
- using System.Data.Common;
- using System.Collections.Generic;
- /// <summary>
- /// 数据访问抽象基础类
- /// Copyright (C) Maticsoft
- /// </summary>
- public abstract class DbHelperMySQL
- {
- //数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
- public static string connectionString =
- System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
- public DbHelperMySQL()
- {
- }
- #region 公用方法
- /// <summary>
- /// 得到最大值
- /// </summary>
- /// <param name="FieldName"></param>
- /// <param name="TableName"></param>
- /// <returns></returns>
- public static int GetMaxID(string FieldName, string TableName)
- {
- string strsql = "select max(" + FieldName + ")+1 from " + TableName;
- object obj = GetSingle(strsql);
- if (obj == null)
- {
- return 1;
- }
- else
- {
- return int.Parse(obj.ToString());
- }
- }
- /// <summary>
- /// 是否存在
- /// </summary>
- /// <param name="strSql"></param>
- /// <returns></returns>
- public static bool Exists(string strSql)
- {
- object obj = GetSingle(strSql);
- int cmdresult;
- if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
- {
- cmdresult = 0;
- }
- else
- {
- cmdresult = int.Parse(obj.ToString());
- }
- if (cmdresult == 0)
- {
- return false;
- }
- else
- {
- return true;
- }
- }
- /// <summary>
- /// 是否存在(基于MySqlParameter)
- /// </summary>
- /// <param name="strSql"></param>
- /// <param name="cmdParms"></param>
- /// <returns></returns>
- public static bool Exists(string strSql, params MySqlParameter[] cmdParms)
- {
- object obj = GetSingle(strSql, cmdParms);
- int cmdresult;
- if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
- {
- cmdresult = 0;
- }
- else
- {
- cmdresult = int.Parse(obj.ToString());
- }
- if (cmdresult == 0)
- {
- return false;
- }
- else
- {
- return true;
- }
- }
- #endregion
- #region 执行简单SQL语句
- /// <summary>
- /// 执行SQL语句,返回影响的记录数
- /// </summary>
- /// <param name="SQLString">SQL语句</param>
- /// <returns>影响的记录数</returns>
- public static int ExecuteSql(string SQLString)
- {
- using (MySqlConnection connection = new MySqlConnection(connectionString))
- {
- using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
- {
- try
- {
- connection.Open();
- int rows = cmd.ExecuteNonQuery();
- return rows;
- }
- catch (MySql.Data.MySqlClient.MySqlException e)
- {
- connection.Close();
- throw e;
- }
- }
- }
- }
- public static int ExecuteSqlByTime(string SQLString, int Times)
- {
- using (MySqlConnection connection = new MySqlConnection(connectionString))
- {
- using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
- {
- try
- {
- connection.Open();
- cmd.CommandTimeout = Times;
- int rows = cmd.ExecuteNonQuery();
- return rows;
- }
- catch (MySql.Data.MySqlClient.MySqlException e)
- {
- connection.Close();
- throw e;
- }
- }
- }
- }
- /// <summary>
- /// 执行带一个存储过程参数的的SQL语句。
- /// </summary>
- /// <param name="SQLString">SQL语句</param>
- /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
- /// <returns>影响的记录数</returns>
- public static int ExecuteSql(string SQLString, string content)
- {
- using (MySqlConnection connection = new MySqlConnection(connectionString))
- {
- MySqlCommand cmd = new MySqlCommand(SQLString, connection);
- MySql.Data.MySqlClient.MySqlParameter myParameter = new MySql.Data.MySqlClient.MySqlParameter("@content",
- SqlDbType.NText);
- myParameter.Value = content;
- cmd.Parameters.Add(myParameter);
- try
- {
- connection.Open();
- int rows = cmd.ExecuteNonQuery();
- return rows;
- }
- catch (MySql.Data.MySqlClient.MySqlException e)
- {
- throw e;
- }
- finally
- {
- cmd.Dispose();
- connection.Close();
- }
- }
- }
- /// <summary>
- /// 执行带一个存储过程参数的的SQL语句。
- /// </summary>
- /// <param name="SQLString">SQL语句</param>
- /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
- /// <returns>影响的记录数</returns>
- public static object ExecuteSqlGet(string SQLString, string content)
- {
- using (MySqlConnection connection = new MySqlConnection(connectionString))
- {
- MySqlCommand cmd = new MySqlCommand(SQLString, connection);
- MySql.Data.MySqlClient.MySqlParameter myParameter = new MySql.Data.MySqlClient.MySqlParameter("@content",
- SqlDbType.NText);
- myParameter.Value = content;
- cmd.Parameters.Add(myParameter);
- try
- {
- connection.Open();
- object obj = cmd.ExecuteScalar();
- if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
- {
- return null;
- }
- else
- {
- return obj;
- }
- }
- catch (MySql.Data.MySqlClient.MySqlException e)
- {
- throw e;
- }
- finally
- {
- cmd.Dispose();
- connection.Close();
- }
- }
- }
- /// <summary>
- /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)
- /// </summary>
- /// <param name="strSQL">SQL语句</param>
- /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>
- /// <returns>影响的记录数</returns>
- public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
- {
- using (MySqlConnection connection = new MySqlConnection(connectionString))
- {
- MySqlCommand cmd = new MySqlCommand(strSQL, connection);
- MySql.Data.MySqlClient.MySqlParameter myParameter = new MySql.Data.MySqlClient.MySqlParameter("@fs",
- SqlDbType.Image);
- myParameter.Value = fs;
- cmd.Parameters.Add(myParameter);
- try
- {
- connection.Open();
- int rows = cmd.ExecuteNonQuery();
- return rows;
- }
- catch (MySql.Data.MySqlClient.MySqlException e)
- {
- throw e;
- }
- finally
- {
- cmd.Dispose();
- connection.Close();
- }
- }
- }
- /// <summary>
- /// 执行一条计算查询结果语句,返回查询结果(object)。
- /// </summary>
- /// <param name="SQLString">计算查询结果语句</param>
- /// <returns>查询结果(object)</returns>
- public static object GetSingle(string SQLString)
- {
- using (MySqlConnection connection = new MySqlConnection(connectionString))
- {
- using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
- {
- try
- {
- connection.Open();
- object obj = cmd.ExecuteScalar();
- if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
- {
- return null;
- }
- else
- {
- return obj;
- }
- }
- catch (MySql.Data.MySqlClient.MySqlException e)
- {
- connection.Close();
- throw e;
- }
- }
- }
- }
- public static object GetSingle(string SQLString, int Times)
- {
- using (MySqlConnection connection = new MySqlConnection(connectionString))
- {
- using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
- {
- try
- {
- connection.Open();
- cmd.CommandTimeout = Times;
- object obj = cmd.ExecuteScalar();
- if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
- {
- return null;
- }
- else
- {
- return obj;
- }
- }
- catch (MySql.Data.MySqlClient.MySqlException e)
- {
- connection.Close();
- throw e;
- }
- }
- }
- }
- /// <summary>
- /// 执行查询语句,返回MySqlDataReader ( 注意:调用该方法后,一定要对MySqlDataReader进行Close )
- /// </summary>
- /// <param name="strSQL">查询语句</param>
- /// <returns>MySqlDataReader</returns>
- public static MySqlDataReader ExecuteReader(string strSQL)
- {
- MySqlConnection connection = new MySqlConnection(connectionString);
- MySqlCommand cmd = new MySqlCommand(strSQL, connection);
- try
- {
- connection.Open();
- MySqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
- return myReader;
- }
- catch (MySql.Data.MySqlClient.MySqlException e)
- {
- throw e;
- }
- }
- /// <summary>
- /// 执行查询语句,返回DataSet
- /// </summary>
- /// <param name="SQLString">查询语句</param>
- /// <returns>DataSet</returns>
- public static DataSet Query(string SQLString)
- {
- using (MySqlConnection connection = new MySqlConnection(connectionString))
- {
- DataSet ds = new DataSet();
- try
- {
- connection.Open();
- MySqlDataAdapter command = new MySqlDataAdapter(SQLString, connection);
- command.Fill(ds, "ds");
- }
- catch (MySql.Data.MySqlClient.MySqlException ex)
- {
- throw new Exception(ex.Message);
- }
- return ds;
- }
- }
- public static DataSet Query(string SQLString, int Times)
- {
- using (MySqlConnection connection = new MySqlConnection(connectionString))
- {
- DataSet ds = new DataSet();
- try
- {
- connection.Open();
- MySqlDataAdapter command = new MySqlDataAdapter(SQLString, connection);
- command.SelectCommand.CommandTimeout = Times;
- command.Fill(ds, "ds");
- }
- catch (MySql.Data.MySqlClient.MySqlException ex)
- {
- throw new Exception(ex.Message);
- }
- return ds;
- }
- }
- #endregion
- #region 执行带参数的SQL语句
- /// <summary>
- /// 执行SQL语句,返回影响的记录数
- /// </summary>
- /// <param name="SQLString">SQL语句</param>
- /// <returns>影响的记录数</returns>
- public static int ExecuteSql(string SQLString, params MySqlParameter[] cmdParms)
- {
- using (MySqlConnection connection = new MySqlConnection(connectionString))
- {
- using (MySqlCommand cmd = new MySqlCommand())
- {
- try
- {
- PrepareCommand(cmd, connection, null, SQLString, cmdParms);
- int rows = cmd.ExecuteNonQuery();
- cmd.Parameters.Clear();
- return rows;
- }
- catch (MySql.Data.MySqlClient.MySqlException e)
- {
- throw e;
- }
- }
- }
- }
- /// <summary>
- /// 执行多条SQL语句,实现数据库事务。
- /// </summary>
- /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter[])</param>
- public static void ExecuteSqlTran(Hashtable SQLStringList)
- {
- using (MySqlConnection conn = new MySqlConnection(connectionString))
- {
- conn.Open();
- using (MySqlTransaction trans = conn.BeginTransaction())
- {
- MySqlCommand cmd = new MySqlCommand();
- try
- {
- //循环
- foreach (DictionaryEntry myDE in SQLStringList)
- {
- string cmdText = myDE.Key.ToString();
- MySqlParameter[] cmdParms = (MySqlParameter[]) myDE.Value;
- PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
- int val = cmd.ExecuteNonQuery();
- cmd.Parameters.Clear();
- }
- trans.Commit();
- }
- catch
- {
- trans.Rollback();
- throw;
- }
- }
- }
- }
- /// <summary>
- /// 执行多条SQL语句,实现数据库事务。
- /// </summary>
- /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter[])</param>
- public static int ExecuteSqlTran(System.Collections.Generic.List<CommandInfo> cmdList)
- {
- using (MySqlConnection conn = new MySqlConnection(connectionString))
- {
- conn.Open();
- using (MySqlTransaction trans = conn.BeginTransaction())
- {
- MySqlCommand cmd = new MySqlCommand();
- try
- {
- int count = 0;
- //循环
- foreach (CommandInfo myDE in cmdList)
- {
- string cmdText = myDE.CommandText;
- MySqlParameter[] cmdParms = (MySqlParameter[]) myDE.Parameters;
- PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
- if (myDE.EffentNextType == EffentNextType.WhenHaveContine ||
- myDE.EffentNextType == EffentNextType.WhenNoHaveContine)
- {
- if (myDE.CommandText.ToLower().IndexOf("count(") == -1)
- {
- trans.Rollback();
- return 0;
- }
- object obj = cmd.ExecuteScalar();
- bool isHave = false;
- if (obj == null && obj == DBNull.Value)
- {
- isHave = false;
- }
- isHave = Convert.ToInt32(obj) > 0;
- if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)
- {
- trans.Rollback();
- return 0;
- }
- if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)
- {
- trans.Rollback();
- return 0;
- }
- continue;
- }
- int val = cmd.ExecuteNonQuery();
- count += val;
- if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == 0)
- {
- trans.Rollback();
- return 0;
- }
- cmd.Parameters.Clear();
- }
- trans.Commit();
- return count;
- }
- catch
- {
- trans.Rollback();
- throw;
- }
- }
- }
- }
- /// <summary>
- /// 执行多条SQL语句,实现数据库事务。
- /// </summary>
- /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter[])</param>
- public static void ExecuteSqlTranWithIndentity(System.Collections.Generic.List<CommandInfo> SQLStringList)
- {
- using (MySqlConnection conn = new MySqlConnection(connectionString))
- {
- conn.Open();
- using (MySqlTransaction trans = conn.BeginTransaction())
- {
- MySqlCommand cmd = new MySqlCommand();
- try
- {
- int indentity = 0;
- //循环
- foreach (CommandInfo myDE in SQLStringList)
- {
- string cmdText = myDE.CommandText;
- MySqlParameter[] cmdParms = (MySqlParameter[]) myDE.Parameters;
- foreach (MySqlParameter q in cmdParms)
- {
- if (q.Direction == ParameterDirection.InputOutput)
- {
- q.Value = indentity;
- }
- }
- PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
- int val = cmd.ExecuteNonQuery();
- foreach (MySqlParameter q in cmdParms)
- {
- if (q.Direction == ParameterDirection.Output)
- {
- indentity = Convert.ToInt32(q.Value);
- }
- }
- cmd.Parameters.Clear();
- }
- trans.Commit();
- }
- catch
- {
- trans.Rollback();
- throw;
- }
- }
- }
- }
- /// <summary>
- /// 执行多条SQL语句,实现数据库事务。
- /// </summary>
- /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter[])</param>
- public static void ExecuteSqlTranWithIndentity(Hashtable SQLStringList)
- {
- using (MySqlConnection conn = new MySqlConnection(connectionString))
- {
- conn.Open();
- using (MySqlTransaction trans = conn.BeginTransaction())
- {
- MySqlCommand cmd = new MySqlCommand();
- try
- {
- int indentity = 0;
- //循环
- foreach (DictionaryEntry myDE in SQLStringList)
- {
- string cmdText = myDE.Key.ToString();
- MySqlParameter[] cmdParms = (MySqlParameter[]) myDE.Value;
- foreach (MySqlParameter q in cmdParms)
- {
- if (q.Direction == ParameterDirection.InputOutput)
- {
- q.Value = indentity;
- }
- }
- PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
- int val = cmd.ExecuteNonQuery();
- foreach (MySqlParameter q in cmdParms)
- {
- if (q.Direction == ParameterDirection.Output)
- {
- indentity = Convert.ToInt32(q.Value);
- }
- }
- cmd.Parameters.Clear();
- }
- trans.Commit();
- }
- catch
- {
- trans.Rollback();
- throw;
- }
- }
- }
- }
- /// <summary>
- /// 执行一条计算查询结果语句,返回查询结果(object)。
- /// </summary>
- /// <param name="SQLString">计算查询结果语句</param>
- /// <returns>查询结果(object)</returns>
- public static object GetSingle(string SQLString, params MySqlParameter[] cmdParms)
- {
- using (MySqlConnection connection = new MySqlConnection(connectionString))
- {
- using (MySqlCommand cmd = new MySqlCommand())
- {
- try
- {
- PrepareCommand(cmd, connection, null, SQLString, cmdParms);
- object obj = cmd.ExecuteScalar();
- cmd.Parameters.Clear();
- if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
- {
- return null;
- }
- else
- {
- return obj;
- }
- }
- catch (MySql.Data.MySqlClient.MySqlException e)
- {
- throw e;
- }
- }
- }
- }
- /// <summary>
- /// 执行查询语句,返回MySqlDataReader ( 注意:调用该方法后,一定要对MySqlDataReader进行Close )
- /// </summary>
- /// <param name="strSQL">查询语句</param>
- /// <returns>MySqlDataReader</returns>
- public static MySqlDataReader ExecuteReader(string SQLString, params MySqlParameter[] cmdParms)
- {
- MySqlConnection connection = new MySqlConnection(connectionString);
- MySqlCommand cmd = new MySqlCommand();
- try
- {
- PrepareCommand(cmd, connection, null, SQLString, cmdParms);
- MySqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
- cmd.Parameters.Clear();
- return myReader;
- }
- catch (MySql.Data.MySqlClient.MySqlException e)
- {
- throw e;
- }
- // finally
- // {
- // cmd.Dispose();
- // connection.Close();
- // }
- }
- /// <summary>
- /// 执行查询语句,返回DataSet
- /// </summary>
- /// <param name="SQLString">查询语句</param>
- /// <returns>DataSet</returns>
- public static DataSet Query(string SQLString, params MySqlParameter[] cmdParms)
- {
- using (MySqlConnection connection = new MySqlConnection(connectionString))
- {
- MySqlCommand cmd = new MySqlCommand();
- PrepareCommand(cmd, connection, null, SQLString, cmdParms);
- using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
- {
- DataSet ds = new DataSet();
- try
- {
- da.Fill(ds, "ds");
- cmd.Parameters.Clear();
- }
- catch (MySql.Data.MySqlClient.MySqlException ex)
- {
- throw new Exception(ex.Message);
- }
- return ds;
- }
- }
- }
- private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, string cmdText,
- MySqlParameter[] cmdParms)
- {
- if (conn.State != ConnectionState.Open)
- conn.Open();
- cmd.Connection = conn;
- cmd.CommandText = cmdText;
- if (trans != null)
- cmd.Transaction = trans;
- cmd.CommandType = CommandType.Text; //cmdType;
- if (cmdParms != null)
- {
- foreach (MySqlParameter parameter in cmdParms)
- {
- if ((parameter.Direction == ParameterDirection.InputOutput ||
- parameter.Direction == ParameterDirection.Input) &&
- (parameter.Value == null))
- {
- parameter.Value = DBNull.Value;
- }
- cmd.Parameters.Add(parameter);
- }
- }
- }
- #endregion
- }
ADO.NET FOR MySQL帮助类的更多相关文章
- ADO.NET基础巩固-----连接类和非连接类
最近的一段时间自己的状态还是不错的,早上,跑步,上自习看书,下午宿舍里面编程实战,晚上要么练习代码,要么去打球(在不打就没机会了),生活还是挺丰富的. 关于C#的基础回顾就先到前面哪里,这 ...
- ecshop的Mysql操作类
摘要,这是直接摘抄的ecshop的mysql操作类:不过他这里的缓存是用的文件缓存,我们如果想直接使用,可以替换成memcache的或者redis的! <?php /** * ECSHOP MY ...
- 深入理解php的MySQL连接类
php的MySQL连接类. 后面几个show_databases和show_tables....等方法都用了一堆echo,好像一直不喜欢在类的方法里直接用输出语句,不过这也只是列举数据库和表名,构造 ...
- php+mysql分页类的入门实例
php+mysql分页类的简单代码 时间:2016-02-25 06:16:26来源:网络 导读:php+mysql分页类的简单代码,二个php分页类代码,对商品进行分页展示,当前页面数,每个页面展示 ...
- C#操作MySQL的类
C#操作MySQL的类 public class MySqlService { private static log4net.ILog logger = log4net.LogManager.GetL ...
- PHP:自己写的mysql操作类
a{ font-weight: bold; display: block; text-align: center; color: #5887bf; font-size: 22px; } .conten ...
- 着重基础之—MySql Blob类型和Text类型
着重基础之—MySql Blob类型和Text类型 在经历了几个Java项目后,遇到了一些问题,在解决问题中体会到基础需要不断的回顾与巩固. 最近做的项目中,提供给接口调用方数据同步接口,传输的数据格 ...
- VS2013使用EF6通过ADO.NET 连接mySql成功步骤
VS2013使用EF6通过ADO.NET 连接mySql成功步骤 1.安装mysql-for-visualstudio-1.2.6(我用的目前最新版,这个一般安装VS2013就已经有了,没有的话下载一 ...
- mysql连接类与ORM的封装
ORM: - ORM什么是? 类名 ---> 数据库表 对象 ---> 记录 对象.属性 ---> 字段 - ORM的优缺点: 优点: 可跨平台,可以通过对象.属性取值,对象.方法, ...
随机推荐
- iterm快捷键及操作技巧(附Linux快捷键)
标签操作 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:command + enter 查找:com ...
- 普林斯顿大学算法课 Algorithm Part I Week 3 求第K大数 Selection
问题 给定N个元素的数组,求第k大的数. 特例当k=0时,就是求最大值,当k=N-1时,就是求最小值. 应用顺序统计求top N排行榜 基本思想 使用快速排序方法中的分区思想,使得a[k]左侧没有更小 ...
- AndroidUI 视图动画-混合动画效果 (AnimationSet)/动画效果监听
在前面介绍了几种动画效果:透明动画效果(AlphsAnimation).移动动画效果(TranslateAnimation).旋转动画效果(RotateAnimation).缩放动画效果(ScaleA ...
- ftk学习记(icon篇)
[声明:版权全部,欢迎转载.请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 在開始今天的文章之前.我们还是先看一下上一节的效果图. 大家能够參照上一节的解说,是不是存在这种 ...
- android 混淆配置
proguard 原理Java代码编译成二进制class 文件,这个class 文件也可以反编译成源代码 ,除了注释外,原来的code 基本都可以看到.为了防止重要code 被泄露,我们往往需要混淆( ...
- C# winfrom中Flash播放使用axShockwaveFlash控件设置透明XP出现白色背景解决办法,仿QQ魔法表情效果
//播放时 图片周围有锯齿白边出现 反锯齿处理暂无解决办法. 如有大神 请给我留言 新Form AllowDrop True 引用using System.IO; 拖1个Button p ...
- asp.net BulletedList样式修改 css
首先编写一段简单的css脚本 然后呢,在asp:BulletedList中通过 CssClass ="style1"将样式作用到控件上.看看运行效果 注意到上下边框的颜色分别是红色 ...
- Asp.Net之三层架构
三层架构之理论: 通常意义上讲的三层架构就是将整个项目应用划分为:表现层(UI),业务逻辑层(BLL),数据访问层(DAL).与传统的二层架构的区别在于在用户界面(UI)和数据库服务器之间,添加中间层 ...
- Oracle的表连接方式
Oracle的表连接方式: 1.Nl Join连接(嵌套连接) 2.Hash Join(哈希连接) 3.Merge Sort Join(排序合并连接) 各种连接的使用场景: 1. 排序合并连接是偏向于 ...
- python dbhelper(simple orm)
# coding:utf- import pymysql class Field(object): pass class Expr(object): def __init__(self, model, ...