You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
757 lines
25 KiB
757 lines
25 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Linq;
|
|
|
|
using MySql.Data.MySqlClient;
|
|
|
|
namespace RoadFlow.Platform
|
|
{
|
|
public class DBConnection
|
|
{
|
|
private RoadFlow.Data.Interface.IDBConnection dataDBConnection;
|
|
public DBConnection()
|
|
{
|
|
this.dataDBConnection = Data.Factory.Factory.GetDBConnection();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 连接类型
|
|
/// </summary>
|
|
public enum Types
|
|
{
|
|
SqlServer,
|
|
Oracle
|
|
}
|
|
|
|
/// <summary>
|
|
/// 新增
|
|
/// </summary>
|
|
public int Add(RoadFlow.Data.Model.DBConnection model)
|
|
{
|
|
int i = dataDBConnection.Add(model);
|
|
ClearCache();
|
|
return i;
|
|
}
|
|
/// <summary>
|
|
/// 更新
|
|
/// </summary>
|
|
public int Update(RoadFlow.Data.Model.DBConnection model)
|
|
{
|
|
int i = dataDBConnection.Update(model);
|
|
ClearCache();
|
|
return i;
|
|
}
|
|
/// <summary>
|
|
/// 查询所有记录
|
|
/// </summary>
|
|
public List<RoadFlow.Data.Model.DBConnection> GetAll(bool fromCache = false)
|
|
{
|
|
if (!fromCache)
|
|
{
|
|
return dataDBConnection.GetAll();
|
|
}
|
|
else
|
|
{
|
|
string key = RoadFlow.Utility.Keys.CacheKeys.DBConnnections.ToString();
|
|
object obj = RoadFlow.Cache.IO.Opation.Get(key);
|
|
if (obj != null && obj is List<RoadFlow.Data.Model.DBConnection>)
|
|
{
|
|
return obj as List<RoadFlow.Data.Model.DBConnection>;
|
|
}
|
|
else
|
|
{
|
|
var list = dataDBConnection.GetAll();
|
|
RoadFlow.Cache.IO.Opation.Set(key, list);
|
|
return list;
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 查询单条记录
|
|
/// </summary>
|
|
public RoadFlow.Data.Model.DBConnection Get(Guid id)
|
|
{
|
|
return dataDBConnection.Get(id);
|
|
}
|
|
/// <summary>
|
|
/// 删除
|
|
/// </summary>
|
|
public int Delete(Guid id)
|
|
{
|
|
int i = dataDBConnection.Delete(id);
|
|
ClearCache();
|
|
return i;
|
|
}
|
|
/// <summary>
|
|
/// 查询记录条数
|
|
/// </summary>
|
|
public long GetCount()
|
|
{
|
|
return dataDBConnection.GetCount();
|
|
}
|
|
/// <summary>
|
|
/// 连接类型
|
|
/// </summary>
|
|
public enum ConnTypes
|
|
{
|
|
SqlServer,
|
|
Oracle
|
|
}
|
|
/// <summary>
|
|
/// 得到所有数据连接类型的下拉选择
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <returns></returns>
|
|
public string GetAllTypeOptions(string value = "")
|
|
{
|
|
StringBuilder options = new StringBuilder();
|
|
var array = Enum.GetValues(typeof(ConnTypes));
|
|
foreach (var arr in array)
|
|
{
|
|
options.AppendFormat("<option value=\"{0}\" {1}>{0}</option>", arr, arr.ToString() == value ? "selected=\"selected\"" : "");
|
|
}
|
|
return options.ToString();
|
|
}
|
|
/// <summary>
|
|
/// 得到所有数据连接的下拉选择
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <returns></returns>
|
|
public string GetAllOptions(string value = "")
|
|
{
|
|
var conns = GetAll(true);
|
|
StringBuilder options = new StringBuilder();
|
|
foreach (var conn in conns.OrderBy(p => p.Name))
|
|
{
|
|
options.AppendFormat("<option value=\"{0}\" {1}>{2}</option>", conn.ID,
|
|
string.Compare(conn.ID.ToString(), value, true) == 0 ? "selected=\"selected\"" : "", conn.Name);
|
|
}
|
|
return options.ToString();
|
|
}
|
|
/// <summary>
|
|
/// 清除缓存
|
|
/// </summary>
|
|
public void ClearCache()
|
|
{
|
|
string key = RoadFlow.Utility.Keys.CacheKeys.DBConnnections.ToString();
|
|
RoadFlow.Cache.IO.Opation.Remove(key);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据连接ID得到所有表
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
public List<string> GetTables(Guid id)
|
|
{
|
|
var allConns = GetAll(true);
|
|
var conn = allConns.Find(p => p.ID == id);
|
|
if (conn == null) return new List<string>();
|
|
List<string> tables = new List<string>();
|
|
|
|
tables = getTables_MySql(conn);
|
|
return tables;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 得到所有字段
|
|
/// </summary>
|
|
/// <param name="id">连接ID</param>
|
|
/// <param name="table">表名</param>
|
|
/// <returns></returns>
|
|
public Dictionary<string, string> GetFields(Guid id, string table)
|
|
{
|
|
if (table.IsNullOrEmpty()) return new Dictionary<string, string>();
|
|
var allConns = GetAll(true);
|
|
var conn = allConns.Find(p => p.ID == id);
|
|
if (conn == null) return new Dictionary<string, string>();
|
|
|
|
Dictionary<string, string> fields = getFields_MySql(conn, table);
|
|
|
|
return fields;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 得到一个连接一个表一个字段的值
|
|
/// </summary>
|
|
/// <param name="link_table_field"></param>
|
|
/// <returns></returns>
|
|
public string GetFieldValue(string link_table_field, Dictionary<string, string> pkFieldValue)
|
|
{
|
|
if (link_table_field.IsNullOrEmpty()) return "";
|
|
string[] array = link_table_field.Split('.');
|
|
if (array.Length != 3) return "";
|
|
string link = array[0];
|
|
string table = array[1];
|
|
string field = array[2];
|
|
var allConns = GetAll(true);
|
|
Guid linkid;
|
|
if (!link.IsGuid(out linkid)) return "";
|
|
var conn = allConns.Find(p => p.ID == linkid);
|
|
if (conn == null) return "";
|
|
List<string> fields = new List<string>();
|
|
|
|
string value = getFieldValue_MySql(conn, table, field, pkFieldValue);
|
|
|
|
return value;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 得到一个连接一个表一个字段的值
|
|
/// </summary>
|
|
/// <param name="link_table_field"></param>
|
|
/// <returns></returns>
|
|
public string GetFieldValue(string link_table_field, string pkField, string pkFieldValue)
|
|
{
|
|
if (link_table_field.IsNullOrEmpty())
|
|
{
|
|
return "";
|
|
}
|
|
string[] array = link_table_field.Split('.');
|
|
if (array.Length != 3)
|
|
{
|
|
return "";
|
|
}
|
|
string link = array[0];
|
|
string table = array[1];
|
|
string field = array[2];
|
|
var allConns = GetAll(true);
|
|
Guid linkid;
|
|
if (!link.IsGuid(out linkid))
|
|
{
|
|
return "";
|
|
}
|
|
var conn = allConns.Find(p => p.ID == linkid);
|
|
if (conn == null)
|
|
{
|
|
return "";
|
|
}
|
|
string value = string.Empty;
|
|
|
|
value = getFieldValue_MySql(conn, table, field, pkField, pkFieldValue);
|
|
|
|
return value;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 测试一个连接
|
|
/// </summary>
|
|
/// <param name="connID"></param>
|
|
/// <returns></returns>
|
|
public string Test(Guid connID)
|
|
{
|
|
var link = Get(connID);
|
|
if (link == null) return "未找到连接!";
|
|
|
|
return test_MySql(link);
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 测试一个连接(oracle)
|
|
/// </summary>
|
|
/// <param name="conn"></param>
|
|
/// <returns></returns>
|
|
private string test_MySql(RoadFlow.Data.Model.DBConnection conn)
|
|
{
|
|
using (MySqlConnection sqlConn = new MySqlConnection(conn.ConnectionString))
|
|
{
|
|
try
|
|
{
|
|
sqlConn.Open();
|
|
return "连接成功!";
|
|
}
|
|
catch (Exception err)
|
|
{
|
|
return err.Message;
|
|
}
|
|
finally
|
|
{
|
|
if (sqlConn.State == ConnectionState.Open)
|
|
{
|
|
sqlConn.Close();
|
|
MySqlConnection.ClearPool(sqlConn);//加入此行可释放连接
|
|
sqlConn.Dispose();
|
|
}
|
|
GC.Collect();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 得到一个连接所有表(oracle)
|
|
/// </summary>
|
|
/// <param name="conn"></param>
|
|
/// <returns></returns>
|
|
private List<string> getTables_MySql(RoadFlow.Data.Model.DBConnection conn)
|
|
{
|
|
using (MySqlConnection oraConn = new MySqlConnection(conn.ConnectionString))
|
|
{
|
|
try
|
|
{
|
|
oraConn.Open();
|
|
|
|
List<string> tables = new List<string>();
|
|
string sql = "select table_name TNAME,(case table_type WHEN 'BASE TABLE' then 'TABLE' when 'VIEW' then 'VIEW' else '' end ) TABTYPE ,null CLUSTERID from information_schema.tables where table_schema='smartcamp' ";
|
|
using (MySqlCommand sqlCmd = new MySqlCommand(sql, oraConn))
|
|
{
|
|
MySqlDataReader dr = sqlCmd.ExecuteReader();
|
|
while (dr.Read())
|
|
{
|
|
tables.Add(dr.GetString(0));
|
|
}
|
|
dr.Close();
|
|
return tables;
|
|
}
|
|
}
|
|
catch (SqlException err)
|
|
{
|
|
Log.Add(err);
|
|
return new List<string>();
|
|
}
|
|
finally
|
|
{
|
|
if (oraConn.State == ConnectionState.Open)
|
|
{
|
|
oraConn.Close();
|
|
MySqlConnection.ClearPool(oraConn);//加入此行可释放连接
|
|
oraConn.Dispose();
|
|
}
|
|
GC.Collect();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 得到一个连接一个表所有字段
|
|
/// </summary>
|
|
/// <param name="conn"></param>
|
|
/// <param name="table"></param>
|
|
/// <returns></returns>
|
|
private Dictionary<string, string> getFields_MySql(RoadFlow.Data.Model.DBConnection conn, string table)
|
|
{
|
|
using (MySqlConnection sqlConn = new MySqlConnection(conn.ConnectionString))
|
|
{
|
|
try
|
|
{
|
|
sqlConn.Open();
|
|
Dictionary<string, string> fields = new Dictionary<string, string>();
|
|
string sql = string.Format("select COLUMN_NAME,column_comment COMMENTS from information_schema.columns where table_schema='smartcamp' and table_name='{0}'", table);
|
|
using (MySqlCommand sqlCmd = new MySqlCommand(sql, sqlConn))
|
|
{
|
|
MySqlDataReader dr = sqlCmd.ExecuteReader();
|
|
while (dr.Read())
|
|
{
|
|
fields.Add(dr.GetString(0), dr.IsDBNull(1) ? "" : dr.GetString(1));
|
|
}
|
|
dr.Close();
|
|
return fields;
|
|
}
|
|
}
|
|
catch (Exception err)
|
|
{
|
|
Log.Add(err);
|
|
return new Dictionary<string, string>();
|
|
}
|
|
finally
|
|
{
|
|
if (sqlConn.State == ConnectionState.Open)
|
|
{
|
|
sqlConn.Close();
|
|
MySqlConnection.ClearPool(sqlConn);//加入此行可释放连接
|
|
sqlConn.Dispose();
|
|
}
|
|
GC.Collect();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 得到一个连接一个表一个字段的值
|
|
/// </summary>
|
|
/// <param name="conn">连接ID</param>
|
|
/// <param name="table">表名</param>
|
|
/// <param name="field">字段名</param>
|
|
/// <param name="pkFieldValue">主键和值字典</param>
|
|
/// <returns></returns>
|
|
private string getFieldValue_MySql(RoadFlow.Data.Model.DBConnection conn, string table, string field, Dictionary<string, string> pkFieldValue)
|
|
{
|
|
using (MySqlConnection sqlConn = new MySqlConnection(conn.ConnectionString))
|
|
{
|
|
try
|
|
{
|
|
sqlConn.Open();
|
|
List<string> fields = new List<string>();
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.AppendFormat("select {0} from {1} where 1=1", field, table);
|
|
foreach (var pk in pkFieldValue)
|
|
{
|
|
sql.AppendFormat(" and {0}='{1}'", pk.Key, pk.Value);
|
|
}
|
|
|
|
using (MySqlCommand sqlCmd = new MySqlCommand(sql.ToString(), sqlConn))
|
|
{
|
|
MySqlDataReader dr = sqlCmd.ExecuteReader();
|
|
string value = string.Empty;
|
|
if (dr.HasRows)
|
|
{
|
|
dr.Read();
|
|
value = dr.GetString(0);
|
|
}
|
|
dr.Close();
|
|
return value;
|
|
}
|
|
}
|
|
catch (Exception err)
|
|
{
|
|
Log.Add(err);
|
|
return "";
|
|
}
|
|
finally
|
|
{
|
|
if (sqlConn.State == ConnectionState.Open)
|
|
{
|
|
sqlConn.Close();
|
|
MySqlConnection.ClearPool(sqlConn);//加入此行可释放连接
|
|
sqlConn.Dispose();
|
|
}
|
|
GC.Collect();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 得到一个连接一个表一个字段的值
|
|
/// </summary>
|
|
/// <param name="linkID">连接ID</param>
|
|
/// <param name="table">表</param>
|
|
/// <param name="field">字段</param>
|
|
/// <param name="pkField">主键字段</param>
|
|
/// <param name="pkFieldValue">主键值</param>
|
|
/// <returns></returns>
|
|
private string getFieldValue_MySql(RoadFlow.Data.Model.DBConnection conn, string table, string field, string pkField, string pkFieldValue)
|
|
{
|
|
string v = "";
|
|
using (MySqlConnection sqlConn = new MySqlConnection(conn.ConnectionString))
|
|
{
|
|
try
|
|
{
|
|
sqlConn.Open();
|
|
string sql = string.Format("SELECT {0} FROM {1} WHERE {2} = '{3}'", field, table, pkField, pkFieldValue);
|
|
using (MySqlDataAdapter dap = new MySqlDataAdapter(sql, sqlConn))
|
|
{
|
|
try
|
|
{
|
|
DataTable dt = new DataTable();
|
|
dap.Fill(dt);
|
|
if (dt.Rows.Count > 0)
|
|
{
|
|
v = dt.Rows[0][0].ToString();
|
|
}
|
|
}
|
|
catch (Exception err)
|
|
{
|
|
Log.Add(err);
|
|
}
|
|
return v;
|
|
}
|
|
}
|
|
catch (Exception err)
|
|
{
|
|
Log.Add(err);
|
|
return "";
|
|
}
|
|
finally
|
|
{
|
|
if (sqlConn.State == ConnectionState.Open)
|
|
{
|
|
sqlConn.Close();
|
|
MySqlConnection.ClearPool(sqlConn);//加入此行可释放连接
|
|
sqlConn.Dispose();
|
|
}
|
|
GC.Collect();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据连接实体得到连接
|
|
/// </summary>
|
|
/// <param name="linkID"></param>
|
|
/// <returns></returns>
|
|
public System.Data.IDbConnection GetConnection(RoadFlow.Data.Model.DBConnection dbconn)
|
|
{
|
|
if (dbconn == null || dbconn.Type.IsNullOrEmpty() || dbconn.ConnectionString.IsNullOrEmpty())
|
|
{
|
|
return null;
|
|
}
|
|
IDbConnection conn = null;
|
|
|
|
conn = new MySqlConnection(dbconn.ConnectionString);
|
|
|
|
return conn;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据连接实体得到数据适配器
|
|
/// </summary>
|
|
/// <param name="linkID"></param>
|
|
/// <returns></returns>
|
|
public System.Data.IDbDataAdapter GetDataAdapter(IDbConnection conn, string connType, string cmdText, IDataParameter[] parArray)
|
|
{
|
|
IDbDataAdapter dataAdapter = null;
|
|
|
|
MySqlCommand cmd1 = new MySqlCommand(cmdText, (MySqlConnection)conn);
|
|
if (parArray != null && parArray.Length > 0)
|
|
{
|
|
cmd1.Parameters.AddRange(parArray);
|
|
}
|
|
dataAdapter = new MySqlDataAdapter(cmd1);
|
|
|
|
return dataAdapter;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 测试一个sql是否合法
|
|
/// </summary>
|
|
/// <param name="dbconn"></param>
|
|
/// <param name="sql"></param>
|
|
/// <returns></returns>
|
|
public bool TestSql(RoadFlow.Data.Model.DBConnection dbconn, string sql)
|
|
{
|
|
if (dbconn == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
using (MySqlConnection conn = new MySqlConnection(dbconn.ConnectionString))
|
|
{
|
|
try
|
|
{
|
|
conn.Open();
|
|
using (MySqlCommand cmd = new MySqlCommand(sql.ReplaceSelectSql(), conn))
|
|
{
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
return true;
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
MySqlConnection.ClearPool(conn);//加入此行可释放连接
|
|
conn.Dispose();
|
|
}
|
|
GC.Collect();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据连接实体得到数据表
|
|
/// </summary>
|
|
/// <param name="dbconn"></param>
|
|
/// <param name="table"></param>
|
|
/// <param name="field"></param>
|
|
/// <param name="fieldValue"></param>
|
|
/// <returns></returns>
|
|
public DataTable GetDataTable(string dbconn, string table, string field, string fieldValue)
|
|
{
|
|
if (dbconn.IsNullOrEmpty() || table.IsNullOrEmpty() || field.IsNullOrEmpty() || fieldValue.IsNullOrEmpty())
|
|
{
|
|
return new DataTable();
|
|
}
|
|
|
|
var conn = Get(dbconn.ToGuid());
|
|
if (conn == null)
|
|
{
|
|
return new DataTable();
|
|
}
|
|
|
|
string sql = "SELECT * FROM " + table + " WHERE " + field + " = @" + field;
|
|
IDataParameter[] parameterArray = new MySqlParameter[] { new MySqlParameter("@" + field, fieldValue) };
|
|
return GetDataTable(conn, sql, parameterArray);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据连接实体得到数据表
|
|
/// </summary>
|
|
/// <param name="linkID"></param>
|
|
/// <returns></returns>
|
|
public DataTable GetDataTable(RoadFlow.Data.Model.DBConnection dbconn, string sql, IDataParameter[] parameterArray = null)
|
|
{
|
|
if (dbconn == null || dbconn.Type.IsNullOrEmpty() || dbconn.ConnectionString.IsNullOrEmpty())
|
|
{
|
|
return null;
|
|
}
|
|
DataTable dt = new DataTable();
|
|
|
|
using (MySqlConnection conn = new MySqlConnection(dbconn.ConnectionString))
|
|
{
|
|
try
|
|
{
|
|
conn.Open();
|
|
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
|
|
{
|
|
if (parameterArray != null && parameterArray.Length > 0)
|
|
{
|
|
cmd.Parameters.AddRange((MySqlParameter[])parameterArray);
|
|
}
|
|
using (MySqlDataAdapter dap = new MySqlDataAdapter(cmd))
|
|
{
|
|
dap.Fill(dt);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Platform.Log.Add(ex);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
MySqlConnection.ClearPool(conn);//加入此行可释放连接
|
|
conn.Dispose();
|
|
}
|
|
GC.Collect();
|
|
}
|
|
}
|
|
|
|
return dt;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 得到一个表的结构
|
|
/// </summary>
|
|
/// <param name="conn"></param>
|
|
/// <param name="tableName"></param>
|
|
/// <param name="dbType"></param>
|
|
/// <returns></returns>
|
|
public System.Data.DataTable GetTableSchema(System.Data.IDbConnection conn, string tableName, string dbType)
|
|
{
|
|
DataTable dt = new DataTable();
|
|
|
|
string sql1 = string.Format(@"SELECT COLUMN_NAME as f_name,DATA_TYPE as t_name
|
|
,CHARACTER_MAXIMUM_LENGTH AS length
|
|
,CASE IS_NULLABLE WHEN 'YES' THEN 1 WHEN 'NO' THEN 0 END AS is_null
|
|
,COLUMN_DEFAULT AS cdefault
|
|
,0 as isidentity
|
|
FROM information_schema.columns WHERE table_schema='smartcamp' and table_name='{0}' ", tableName);
|
|
MySqlDataAdapter dap1 = new MySqlDataAdapter(sql1, (MySqlConnection)conn);
|
|
dap1.Fill(dt);
|
|
|
|
return dt;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 更新一个连接一个表一个字段的值
|
|
/// </summary>
|
|
/// <param name="connID"></param>
|
|
/// <param name="table"></param>
|
|
/// <param name="field"></param>
|
|
/// <param name="value"></param>
|
|
public void UpdateFieldValue(Guid connID, string table, string field, string value, string where)
|
|
{
|
|
var conn = Get(connID);
|
|
if (conn == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
using (var dbconn = GetConnection(conn))
|
|
{
|
|
try
|
|
{
|
|
dbconn.Open();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Platform.Log.Add(ex);
|
|
}
|
|
string sql = string.Format("UPDATE {0} SET {1}=@value WHERE {2}", table, field, where);
|
|
MySqlParameter par = new MySqlParameter("@value", value);
|
|
using (MySqlCommand cmd = new MySqlCommand(sql, (MySqlConnection)dbconn))
|
|
{
|
|
cmd.Parameters.Add(par);
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Platform.Log.Add(ex);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除一个连接表的数据
|
|
/// </summary>
|
|
/// <param name="connID"></param>
|
|
/// <param name="table"></param>
|
|
/// <param name="pkFiled"></param>
|
|
/// <param name="pkValue"></param>
|
|
public int DeleteData(Guid connID, string table, string pkFiled, string pkValue)
|
|
{
|
|
int count = 0;
|
|
var conn = Get(connID);
|
|
if (conn == null)
|
|
{
|
|
return count;
|
|
}
|
|
|
|
using (var dbconn = GetConnection(conn))
|
|
{
|
|
try
|
|
{
|
|
dbconn.Open();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Platform.Log.Add(ex);
|
|
}
|
|
string sql = string.Format("DELETE FROM {0} WHERE {1}=@{1}", table, pkFiled);
|
|
MySqlParameter par = new MySqlParameter("@" + pkFiled, pkValue);
|
|
using (MySqlCommand cmd = new MySqlCommand(sql, (MySqlConnection)dbconn))
|
|
{
|
|
cmd.Parameters.Add(par);
|
|
try
|
|
{
|
|
count = cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Platform.Log.Add(ex);
|
|
}
|
|
}
|
|
}
|
|
|
|
return count;
|
|
}
|
|
}
|
|
}
|
|
|