数据库接口基础类 oracle,sql server

数据库   发布日期:2025年06月11日   浏览次数:154

1.为数据库读取基类

  1. public class DBBase : IDisposable
  2. {
  3. public virtual void Dispose()
  4. {
  5. throw new NotImplementedException();
  6. }
  7. public virtual int ExecuteSQL(string sql)
  8. {
  9. return ;
  10. }
  11. public virtual DataTable DBGetDataTable(string sql)
  12. {
  13. return null;
  14. }
  15. /// </summary>
  16. /// <param name="item"></param>
  17. /// <param name="keyname"></param>
  18. /// <param name="keyid"></param>
  19. /// <returns></returns>
  20. public int ExecuteSQL_Update(object item, string key, string keyvalue)
  21. {
  22. if (item == null)
  23. return -;
  24. var type = item.GetType();
  25. var tablename = type.Name;
  26. var atts = type.GetProperties();
  27. string valueset = "";
  28. foreach (var a in atts)
  29. {
  30. var aname = a.Name;
  31. var value = a.GetValue(item);
  32. valueset += aname + "=" + GetValue2String(value) + ",";
  33. }
  34. valueset = valueset.Trim(',');
  35. var sql = "UPDATE " + tablename + " set " + valueset + " where " + key + "= '" + keyvalue + "'";
  36. return ExecuteSQL(sql);
  37. }
  38. public int ExecuteSQL_Insert(object item)
  39. {
  40. if (item == null)
  41. return -;
  42. var type = item.GetType();
  43. var tablename = type.Name;
  44. var atts = type.GetProperties();
  45. var keys = "";
  46. var values = "";
  47. foreach (var a in atts)
  48. {
  49. var aname = a.Name;

              //插入中对对象的处理
  1. var attdescs = a.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
  2. if (attdescs.Count() != )
  3. {
  4. var att = attdescs[] as System.ComponentModel.DescriptionAttribute;
  5. if (att != null)
  6. {
  7. if (att.Description == "Serialize")
  8. {
  9. var vale = a.GetValue(item,null);
  10. DataContractJsonSerializer ser = new DataContractJsonSerializer(vale.GetType());
  11. MemoryStream ms = new MemoryStream();
  12. ser.WriteObject(ms, vale);
  13. string jsonString = Encoding.UTF8.GetString(ms.ToArray());
  14. ms.Close();
  15. keys += aname + ",";
  16. values += GetValue2String(jsonString) + ",";
  17. continue;
  18. }
  19. if (att.Description == "Ignore")
  20. {
  21. continue;
  22. }
  23. }
  24. }
  1.  
  1. var value = a.GetValue(item);
  2. keys += aname + ",";
  3. values += GetValue2String(value) + ",";
  4. }
  5. keys = keys.Trim(',');
  6. values = values.Trim(',');
  7. var sql = "INSERT INTO " + tablename + " ( " + keys + " ) VALUES ( " + values + " )";
  8. return ExecuteSQL(sql);
  9. }
  10. /// <summary>
  11. /// 获取对象列表
  12. /// </summary>
  13. /// <typeparam name="T">表所对应的对象名称</typeparam>
  14. /// <param name="sql">查询语句</param>
  15. /// <returns>返回获取到的对象实例列表</returns>
  16. public List<T> QueryObjectList<T>(string sql) where T : new()
  17. {
  18. var table = DBGetDataTable(sql);
  19. return ConvertTableToObject<T>(table);
  20. }
  21. public List<T> ConvertTableToObject<T>(DataTable t) where T : new()
  22. {
  23. if (t == null)
  24. return null;
  25. List<T> list = new List<T>();
  26. foreach (DataRow row in t.Rows)
  27. {
  28. T obj = new T();
  29. GetObject(t.Columns, row, obj);
  30. if (obj != null && obj is T)
  31. list.Add(obj);
  32. }
  33. return list;
  34. }
  35. public T ConvertToObject<T>(DataRow row) where T : new()
  36. {
  37. object obj = new T();
  38. if (row != null)
  39. {
  40. DataTable t = row.Table;
  41. GetObject(t.Columns, row, obj);
  42. }
  43. if (obj != null && obj is T)
  44. return (T)obj;
  45. else
  46. return default(T);
  47. }
  48. /// <summary>
  49. /// 获取第一条数据中的某个值
  50. /// </summary>
  51. /// <param name="sql"></param>
  52. /// <param name="key"></param>
  53. /// <returns></returns>
  54. public string QueryString(string sql, string key)
  55. {
  56. var table = DBGetDataTable(sql);
  57. if (table != null)
  58. {
  59. if (table.Rows.Count >= )
  60. {
  61. var row = table.Rows[];
  62. if (row != null)
  63. {
  64. return GetValue2String(row[key]);
  65. }
  66. }
  67. }
  68. return null;
  69. }
  70. protected void GetObject(DataColumnCollection cols, DataRow dr, Object obj)
  71. {
  72. Type t = obj.GetType();
  73. var props = t.GetProperties();
  74. foreach (var pro in props)
  75. {
  76. if (cols.Contains(pro.Name))
  77. {
  78. if (dr[pro.Name] != DBNull.Value)
  79. {
  80. try
  81. {
  82. switch (pro.PropertyType.Name)
  83. {
  84. case "Int32":
  85. {
  86. Int32 value = Convert.ToInt32(dr[pro.Name]);
  87. pro.SetValue(obj, value, null);
  88. }
  89. break;
  90. case "System.Nullable`1[System.Int32]":
  91. {
  92. Int32 value = Convert.ToInt32(dr[pro.Name]);
  93. pro.SetValue(obj, value, null);
  94. }
  95. break;
  96. case "Nullable`1"://数据库可为空的字段处理
  97. {
  98. var name = pro.ToString();
  99. if (name.Contains("System.Nullable`1[System.Int32]"))
  100. {
  101. var intvalue = dr[pro.Name];
  102. if (intvalue != null)
  103. {
  104. Int32 value = Convert.ToInt32(intvalue);
  105. pro.SetValue(obj, value, null);
  106. }
  107. }
  108. else if (name.Contains("System.Nullable`1[System.DateTime]"))
  109. {
  110. var intvalue = dr[pro.Name];
  111. if (intvalue != null)
  112. {
  113. var value = Convert.ToDateTime(intvalue);
  114. pro.SetValue(obj, value, null);
  115. }
  116. }
  117. }
  118. break;
  119. case "Double":
  120. {
  121. double value = Convert.ToDouble(dr[pro.Name]);
  122. pro.SetValue(obj, value, null);
  123. }
  124. break;
  125. case "Single":
  126. {
  127. float value = Convert.ToSingle(dr[pro.Name]);
  128. pro.SetValue(obj, value, null);
  129. }
  130. break;
  131. case "Int64":
  132. {
  133. Int64 value = Convert.ToInt64(dr[pro.Name]);
  134. pro.SetValue(obj, value, null);
  135. }
  136. break;
  137. case "Int16":
  138. {
  139. Int16 value = Convert.ToInt16(dr[pro.Name]);
  140. pro.SetValue(obj, value, null);
  141. }
  142. break;
  143. case "Decimal":
  144. {
  145. Decimal value = Convert.ToDecimal(dr[pro.Name]);
  146. pro.SetValue(obj, value, null);
  147. }
  148. break;
  149. case "String":
  150. {
  151. try
  152. {
  153. var oldt = dr[pro.Name].GetType();
    if (oldt.Name !="String")//这里处理类型不对应的情况,默认model类型是string的时候判断,不对应就转成string,便于model定义
  154. {
  155. pro.SetValue(obj, dr[pro.Name].ToString(), null);
  156. }
  157. else
  158. {
  159. pro.SetValue(obj, dr[pro.Name], null);
  160. }
  161. }
  162. catch
  163. {
  164. pro.SetValue(obj, dr[pro.Name].ToString(), null);
  165. }
  166. }
  167. break;
  168. default:
  169. {
  1.                       
                            //程序对对象的处理,对象上有Description特性,两种情况,序列化或忽略
                           var attdescs = pro.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
  2. if (attdescs.Count() != )
  3. {
  4. var att = attdescs[] as System.ComponentModel.DescriptionAttribute;
  5. if (att != null)
  6. {
  7. if (att.Description == "Serialize")
  8. {
  9. var vale = dr[pro.Name].ToString();
  10. var serializer = new DataContractJsonSerializer(pro.PropertyType);
  11. var ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(vale.ToCharArray()));
  12. var objval = serializer.ReadObject(ms);
  13. ms.Close();
  14. pro.SetValue(obj, objval, null);
  15. continue;
  16. }
  17. if (att.Description == "Ignore")
  18. {
  19. continue;
  20. }
  21. }
  22. }
  23. pro.SetValue(obj, dr[pro.Name], null);
  1. }
  2. break;
  3. }
  4. }
  5. catch
  6. {
  7. pro.SetValue(obj, null, null);
  8. }
  9. finally
  10. {
  11. }
  12. }
  13. else
  14. {
  15. pro.SetValue(obj, null, null);
  16. }
  17. }
  18. }
  19. }
  20. protected string GetValue2String(Object obj)
  21. {
  22. if (obj == null)
  23. return "null";
  24. Type t = obj.GetType();
  25. try
  26. {
  27. switch (t.Name)
  28. {
  29. case "String":
  30. {
  31. return "'" + obj.ToString() + "'";
  32. }
  33. case "DateTime":
  34. {
  35. return "to_date('" + obj.ToString() + "','YYYY-MM-DD hh24:mi:ss')";//默认获取到的日期格式,可以根据具体需求改
  36. }
  37. default:
  38. {
  39. return obj.ToString();
  40. }
  41. }
  42. }
  43. catch
  44. {
  45. return "";
  46. }
  47. }
  48. }

2.oracle 派生

  1. public class DBSupport : DBBase
  2. {
  3. //public static string conncet = System.Configuration.ConfigurationManager.AppSettings["conn"].ToString();
  4. string conn;
  5. public DBSupport(string connect)
  6. {
  7. conn = connect;
  8. if (mQracleConnecting == null)
  9. mQracleConnecting = new OracleConnection(connect);
  10. if (mQracleConnecting.State != ConnectionState.Open)
  11. mQracleConnecting.Open();
  12. }
  13. #region DB
  14. OracleConnection mQracleConnecting = null;
  15. public OracleConnection QracleConnecting
  16. {
  17. get
  18. {
  19. return mQracleConnecting;
  20. }
  21. }
  22. public override DataTable DBGetDataTable(string sql)
  23. {
  24. try
  25. {
  26. DataTable dataSet = new DataTable();
  27. OracleDataAdapter OraDA = new OracleDataAdapter(sql, mQracleConnecting);
  28. OraDA.Fill(dataSet);
  29. return dataSet;
  30. }
  31. catch (Exception)
  32. {
  33. FileSupport.Instance.Write("数据库连接异常" + conn);
  34. return null;
  35. }
  36. }
  37. // 执行SQL语句,返回所影响的行数
  38. public override int ExecuteSQL(string sql)
  39. {
  40. int Cmd = ;
  41. OracleCommand command = new OracleCommand(sql, QracleConnecting);
  42. try
  43. {
  44. Cmd = command.ExecuteNonQuery();
  45. }
  46. catch(Exception ex)
  47. {
  48. FileSupport.Instance.Write(ex.ToString());
  49. }
  50. return Cmd;
  51. }
  52. #endregion
  53. public DataSet ReturnDataSet(string sql, string DataSetName)
  54. {
  55. DataSet dataSet = new DataSet();
  56. OracleDataAdapter OraDA = new OracleDataAdapter(sql, QracleConnecting);
  57. OraDA.Fill(dataSet, DataSetName);
  58. return dataSet;
  59. }
  60. public override void Dispose()
  61. {
  62. if(mQracleConnecting.State == ConnectionState.Open)
  63. mQracleConnecting.Close();
  64. }
  65. }

3.sql server 派生

  1. public class SQLDBSupport : DBBase
  2. {
  3. string conn;
  4. public SQLDBSupport(string connect)
  5. {
  6. if (mConnecting == null)
  7. {
  8. conn = connect;
  9. mConnecting = new SqlConnection(connect);
  10. mConnecting.Open();
  11. }
  12. }
  13. #region DB
  14. SqlConnection mConnecting = null;
  15. public SqlConnection Connecting
  16. {
  17. get
  18. {
  19. return mConnecting;
  20. }
  21. }
  22. public override DataTable DBGetDataTable(string sql)
  23. {
  24. try
  25. {
  26. SqlDataAdapter myda = new SqlDataAdapter(sql, Connecting); // 实例化适配器
  27. DataTable dt = new DataTable(); // 实例化数据表
  28. myda.Fill(dt); // 保存数据
  29. return dt;
  30. }
  31. catch (Exception ex)
  32. {
  33. FileSupport.Instance.Write(ex.ToString());
  34. return null;
  35. }
  36. }
  37. // 执行SQL语句,返回所影响的行数
  38. public override int ExecuteSQL(string sql)
  39. {
  40. int Cmd = ;
  41. var Command= Connecting.CreateCommand();
  42. try
  43. {
  44. Cmd = Command.ExecuteNonQuery();
  45. }
  46. catch (Exception ex)
  47. {
  48. FileSupport.Instance.Write(ex.ToString());
  49. }
  50. return Cmd;
  51. }
  52. #endregion
  53. public override void Dispose()
  54. {
  55. if (Connecting.State == ConnectionState.Open)
  56. Connecting.Close();
  57. }
  58. }

 

以上就是数据库接口基础类 oracle,sql server的详细内容,更多关于数据库接口基础类 oracle,sql server的资料请关注九品源码其它相关文章!