2140 lines
82 KiB
C#
2140 lines
82 KiB
C#
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Collections;
|
|||
|
|
using System.ComponentModel;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Drawing;
|
|||
|
|
using System;
|
|||
|
|
using System.IO;
|
|||
|
|
using System.Xml;
|
|||
|
|
using System.Data.OleDb;
|
|||
|
|
using System.Globalization;
|
|||
|
|
using System.Data.OracleClient;
|
|||
|
|
using System.Data;
|
|||
|
|
using Npgsql;
|
|||
|
|
|
|||
|
|
namespace CRVM.Utility
|
|||
|
|
{
|
|||
|
|
#region enumclass
|
|||
|
|
public enum ShowStyle
|
|||
|
|
{ horizontal, vertical }//, none
|
|||
|
|
public enum DataBaseType
|
|||
|
|
{ DB2, Oracle, other }
|
|||
|
|
public enum BehaviorState
|
|||
|
|
{ Add, Edit, none }
|
|||
|
|
public enum DataState
|
|||
|
|
{ ViewData, TableData }
|
|||
|
|
public enum RecordsetState
|
|||
|
|
{ name, sql }
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
[TypeConverter(typeof(ConnStringConverter))]
|
|||
|
|
public class ConnString
|
|||
|
|
{
|
|||
|
|
#region Define
|
|||
|
|
private string provider = "";
|
|||
|
|
private string dataSource = "";
|
|||
|
|
private string locationID = "";
|
|||
|
|
private string userId = "";
|
|||
|
|
private string password = "";
|
|||
|
|
private DataBaseType dBType = DataBaseType.DB2;
|
|||
|
|
#endregion
|
|||
|
|
public string Password
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
return password;
|
|||
|
|
}
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
password = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public string Provider
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
return provider;
|
|||
|
|
}
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
this.provider = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public string DataSource
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
return dataSource;
|
|||
|
|
}
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
this.dataSource = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public string LocationID
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
return locationID;
|
|||
|
|
}
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
this.locationID = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public string UserId
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
return userId;
|
|||
|
|
}
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
this.userId = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public DataBaseType DBType
|
|||
|
|
{
|
|||
|
|
get { return dBType; }
|
|||
|
|
set { dBType = value; }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 字符类格式转换
|
|||
|
|
/// </summary>
|
|||
|
|
internal class ConnStringConverter : TypeConverter
|
|||
|
|
{
|
|||
|
|
public override PropertyDescriptorCollection
|
|||
|
|
GetProperties(ITypeDescriptorContext context, object value, Attribute[] filter)
|
|||
|
|
{
|
|||
|
|
return TypeDescriptor.GetProperties(value, filter);
|
|||
|
|
}
|
|||
|
|
public override bool GetPropertiesSupported(ITypeDescriptorContext context)
|
|||
|
|
{
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
internal class CanConnStringConverter : ExpandableObjectConverter
|
|||
|
|
{
|
|||
|
|
public override bool CanConvertFrom(ITypeDescriptorContext context, Type t)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
if (t == typeof(string))
|
|||
|
|
{
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
return base.CanConvertFrom(context, t);
|
|||
|
|
}
|
|||
|
|
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo info, object value)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
if (value is string)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
string s = (string)value;
|
|||
|
|
string[] Strarray = s.Split(',');
|
|||
|
|
ConnString p = new ConnString();
|
|||
|
|
p.LocationID = Strarray[0];
|
|||
|
|
p.DataSource = Strarray[1];
|
|||
|
|
p.Provider = Strarray[2];
|
|||
|
|
p.UserId = Strarray[3];
|
|||
|
|
p.Password = Strarray[4];
|
|||
|
|
return p;
|
|||
|
|
}
|
|||
|
|
catch
|
|||
|
|
{
|
|||
|
|
//throw;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//throw new ArgumentException("Can not convert '" + (string)value + "' to type ConnString");
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
return base.ConvertFrom(context, info, value);
|
|||
|
|
}
|
|||
|
|
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destType)
|
|||
|
|
{
|
|||
|
|
if (destType == typeof(string) && value is ConnString)
|
|||
|
|
{
|
|||
|
|
ConnString p = (ConnString)value;
|
|||
|
|
|
|||
|
|
return p.LocationID + "," + p.DataSource + "," + p.Provider + "," + p.UserId + "," + p.Password;
|
|||
|
|
}
|
|||
|
|
return base.ConvertTo(context, culture, value, destType);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class Model
|
|||
|
|
{
|
|||
|
|
private static Model _instance;
|
|||
|
|
public static Model Instance
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
if (_instance == null)
|
|||
|
|
{ _instance = new Model(); }
|
|||
|
|
return _instance;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 从Recordset中取出表名
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="recordset">Recordset属性</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string SplitRecordset(string recordset)
|
|||
|
|
{
|
|||
|
|
string r_ecordset = "";
|
|||
|
|
if (recordset.Contains("from"))
|
|||
|
|
{
|
|||
|
|
r_ecordset = SplitSQL(recordset);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
r_ecordset = recordset;
|
|||
|
|
}
|
|||
|
|
return r_ecordset;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 拆分SQL语句,取出表名
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="SQL">SQL语句</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string SplitSQL(string aSQL)
|
|||
|
|
{
|
|||
|
|
string SQL = aSQL.ToLower(CultureInfo.InvariantCulture);
|
|||
|
|
string tablename = "";
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
//if (!SQL.Contains("select"))
|
|||
|
|
//{
|
|||
|
|
// throw new SQLException("SQL语句中必须为包含select");
|
|||
|
|
//}
|
|||
|
|
//else
|
|||
|
|
//{
|
|||
|
|
if (SQL.Contains("insert"))
|
|||
|
|
{
|
|||
|
|
int p1 = SQL.IndexOf("into");
|
|||
|
|
|
|||
|
|
if (SQL.Contains('('))
|
|||
|
|
{
|
|||
|
|
int p2 = SQL.IndexOf('(');
|
|||
|
|
tablename = SQL.Substring(p1 + 4, p2 - p1 - 4).Trim();
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
int p3 = SQL.IndexOf("select");
|
|||
|
|
tablename = SQL.Substring(p1 + 4, p3 - p1 - 4).Trim();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
else if (SQL.Contains("update"))
|
|||
|
|
{
|
|||
|
|
int p4 = SQL.IndexOf("update");
|
|||
|
|
int p5 = SQL.IndexOf("set");
|
|||
|
|
tablename = SQL.Substring(p4 + 6, p5 - p4 - 6).Trim();
|
|||
|
|
}
|
|||
|
|
else if (SQL.Contains("delete"))
|
|||
|
|
{
|
|||
|
|
int p6 = SQL.IndexOf("from");
|
|||
|
|
if (SQL.Contains("where"))
|
|||
|
|
{
|
|||
|
|
int p7 = SQL.IndexOf("where");
|
|||
|
|
tablename = SQL.Substring(p6 + 4, p7 - p6 - 4).Trim();
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
tablename = SQL.Substring(p6 + 4, SQL.Length - p6 - 4).Trim();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
int p8 = SQL.IndexOf("from");
|
|||
|
|
if (SQL.Contains("where"))
|
|||
|
|
{
|
|||
|
|
int p9 = SQL.IndexOf("where");
|
|||
|
|
tablename = SQL.Substring(p8 + 4, p9 - p8 - 4).Trim();
|
|||
|
|
}
|
|||
|
|
else if (SQL.Contains("order") && !SQL.Contains("where"))
|
|||
|
|
{
|
|||
|
|
int p10 = SQL.IndexOf("order");
|
|||
|
|
tablename = SQL.Substring(p8 + 4, p10 - p8 - 4).Trim();
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
tablename = SQL.Substring(p8 + 4, SQL.Length - p8 - 4).Trim();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
// }
|
|||
|
|
//catch (SQLException e)
|
|||
|
|
//{
|
|||
|
|
// MessageBox.Show(e.Message);
|
|||
|
|
//}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
//MessageBox.Show(e.Message);
|
|||
|
|
}
|
|||
|
|
return tablename;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 表格数据显示转换
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="dt">表格数据</param>
|
|||
|
|
/// <param name="style">显示方式</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static DataTable TransFormDataTable(DataTable dt, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
DataTable dResult = new DataTable();
|
|||
|
|
if (style == ShowStyle.horizontal)
|
|||
|
|
{
|
|||
|
|
dResult.Columns.Add("Head");
|
|||
|
|
for (int i = 1; i <= dt.Rows.Count; i++)
|
|||
|
|
{
|
|||
|
|
dResult.Columns.Add("Data" + i.ToString());
|
|||
|
|
}
|
|||
|
|
for (int j = 0; j <= dt.Columns.Count - 1; j++)
|
|||
|
|
{
|
|||
|
|
DataRow dr = dResult.NewRow();
|
|||
|
|
dr["Head"] = dt.Columns[j].ColumnName;
|
|||
|
|
for (int n = 1; n <= dt.Rows.Count; n++)
|
|||
|
|
{
|
|||
|
|
dr["Data" + n.ToString()] = Convert.ToString(dt.Rows[n - 1][j]);
|
|||
|
|
}
|
|||
|
|
dResult.Rows.Add(dr);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
dResult = dt;
|
|||
|
|
}
|
|||
|
|
return dResult;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 更新SQL语句获取
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="tablename">表名</param>
|
|||
|
|
/// <param name="index">记录索引,水平行索引,垂直列索引</param>
|
|||
|
|
/// <param name="viewdtindex">数据库数据源水平列数,垂直行数</param>
|
|||
|
|
/// <param name="viewdt">数据源</param>
|
|||
|
|
/// <param name="colInfoDt">数据库表字段信息</param>
|
|||
|
|
/// <param name="name_value">编辑记录</param>
|
|||
|
|
/// <param name="EditPriColname_Colvalue">编辑前记录</param>
|
|||
|
|
/// <param name="style">显示方式</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public string UpdateInsertSQL(string tablename, int index, BehaviorState Bstate, DataTable viewdt, DataTable colInfoDt, string[] EditPriColname_Colvalue, ShowStyle style, DataBaseType dbtype)
|
|||
|
|
{
|
|||
|
|
string sql = "";
|
|||
|
|
string[] name_value = new string[2];
|
|||
|
|
|
|||
|
|
name_value = GetColNameColValue(viewdt, index, style);
|
|||
|
|
if (Bstate == BehaviorState.Add)
|
|||
|
|
{
|
|||
|
|
if (!UpdateInsertKeyValueCheckRepeat(viewdt, index, colInfoDt, style))
|
|||
|
|
{
|
|||
|
|
sql = InsertStr(name_value, tablename, colInfoDt, dbtype);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
sql = UpdateStr(name_value, EditPriColname_Colvalue, tablename, colInfoDt, dbtype);
|
|||
|
|
}
|
|||
|
|
return sql;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// Insert操作SQL获取
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="name_value"></param>
|
|||
|
|
/// <param name="tablename"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
private string InsertStr(string[] name_value, string tablename, DataTable colInfo, DataBaseType dbtype)
|
|||
|
|
{
|
|||
|
|
string sql = "";
|
|||
|
|
if (name_value[0] != null)
|
|||
|
|
{
|
|||
|
|
if (name_value[0].Contains(',') && name_value[1].Contains(','))
|
|||
|
|
{
|
|||
|
|
string InsertValue = "";
|
|||
|
|
string InsertName = "";
|
|||
|
|
string[] name = name_value[0].Split(',');
|
|||
|
|
string[] value = name_value[1].Split(',');
|
|||
|
|
if (name.Length == value.Length)
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < value.Length; i++)
|
|||
|
|
{
|
|||
|
|
if (value[i].ToString() != "''")
|
|||
|
|
{
|
|||
|
|
if (dbtype == DataBaseType.Oracle)
|
|||
|
|
{
|
|||
|
|
InsertName += name[i] + ",";
|
|||
|
|
for (int j = 0; j < colInfo.Rows.Count; j++)
|
|||
|
|
{
|
|||
|
|
if (name[i].ToString() == colInfo.Rows[j][0].ToString())
|
|||
|
|
{
|
|||
|
|
if (colInfo.Rows[j][1].ToString() == "DATE")
|
|||
|
|
{
|
|||
|
|
InsertValue += "to_date(" + value[i] + ",'yyyy-mm-dd hh24:mi:ss'),";
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
InsertValue += value[i] + ","; break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
InsertValue += value[i] + ",";
|
|||
|
|
InsertName += name[i] + ",";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
InsertName = InsertName.Substring(0, InsertName.Length - 1);
|
|||
|
|
InsertValue = InsertValue.Substring(0, InsertValue.Length - 1);
|
|||
|
|
}
|
|||
|
|
sql = "insert into " + tablename + "(" + InsertName + ") values (" + InsertValue + ")";
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
sql = "insert into " + tablename + "(" + name_value[0] + ") values (" + name_value[1] + ")";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return sql;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// Update操作SQL获取
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="name_value"></param>
|
|||
|
|
/// <param name="EditPriColname_Colvalue"></param>
|
|||
|
|
/// <param name="tablename"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
private string UpdateStr(string[] name_value, string[] EditPriColname_Colvalue, string tablename, DataTable colInfo, DataBaseType dbtype)
|
|||
|
|
{
|
|||
|
|
string sql = "";
|
|||
|
|
if (name_value[0] != null && EditPriColname_Colvalue[0] != null)
|
|||
|
|
{
|
|||
|
|
if (name_value[1].Contains(',') && EditPriColname_Colvalue[1].Contains(','))
|
|||
|
|
{
|
|||
|
|
string[] Editingvalue = name_value[1].Split(',');
|
|||
|
|
string[] EditPrivalue = EditPriColname_Colvalue[1].Split(',');
|
|||
|
|
string[] ColName = name_value[0].Split(',');
|
|||
|
|
if (Editingvalue.Length == EditPrivalue.Length)
|
|||
|
|
{
|
|||
|
|
string set_value = "";
|
|||
|
|
string where_value = "";
|
|||
|
|
for (int i = 0; i < EditPrivalue.Length; i++)
|
|||
|
|
{
|
|||
|
|
if (dbtype == DataBaseType.Oracle)
|
|||
|
|
{
|
|||
|
|
if (!Editingvalue[i].Equals(EditPrivalue[i]))
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
for (int n = 0; n < colInfo.Rows.Count; n++)
|
|||
|
|
{
|
|||
|
|
if (colInfo.Rows[n][0].ToString() == ColName[i])
|
|||
|
|
{
|
|||
|
|
if (colInfo.Rows[n][1].ToString() == "DATE")
|
|||
|
|
{
|
|||
|
|
set_value += ColName[i] + "=to_date(" + Editingvalue[i] + ",'yyyy-mm-dd hh24:mi:ss'),"; break;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
set_value += ColName[i] + "=" + Editingvalue[i] + ","; break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
if (EditPrivalue[i].ToString() != "''")
|
|||
|
|
{
|
|||
|
|
for (int m = 0; m < colInfo.Rows.Count; m++)
|
|||
|
|
{
|
|||
|
|
if (colInfo.Rows[m][0].ToString() == ColName[i])
|
|||
|
|
{
|
|||
|
|
if (colInfo.Rows[m][1].ToString() == "DATE")
|
|||
|
|
{
|
|||
|
|
where_value += ColName[i] + "=to_date(" + EditPrivalue[i] + ",'yyyy-mm-dd hh24:mi:ss') and ";
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
where_value += ColName[i] + "=" + EditPrivalue[i] + " and ";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
if (!Editingvalue[i].Equals(EditPrivalue[i]))
|
|||
|
|
{
|
|||
|
|
set_value += ColName[i] + "=" + Editingvalue[i] + ",";
|
|||
|
|
}
|
|||
|
|
if (EditPrivalue[i].ToString() != "''")
|
|||
|
|
{
|
|||
|
|
where_value += ColName[i] + "=" + EditPrivalue[i] + " and ";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (set_value.Length > 0 && where_value.Length > 0)
|
|||
|
|
{
|
|||
|
|
set_value = set_value.Substring(0, set_value.Length - 1);
|
|||
|
|
where_value = where_value.Substring(0, where_value.Length - 4).Trim();
|
|||
|
|
sql = "update " + tablename + " set " + set_value + " where " + where_value;
|
|||
|
|
}
|
|||
|
|
else if (set_value.Length > 0 && where_value.Length < 0)
|
|||
|
|
{
|
|||
|
|
set_value = set_value.Substring(0, set_value.Length - 1);
|
|||
|
|
where_value = ColName[0] + "=" + EditPrivalue[0];
|
|||
|
|
sql = "update " + tablename + " set " + set_value + " where " + where_value;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
sql = "Not Edit";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
sql = "update " + tablename + " set " + name_value[0] + "=" + name_value[1] + " where " + EditPriColname_Colvalue[0] + "=" + EditPriColname_Colvalue[1];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return sql;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 当前记录信息获取,长度为2的字符串数组,分别为所有字段的字符串和所有数据值的字符串
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="ViewDt">数据源</param>
|
|||
|
|
/// <param name="rcex">选中行索引(垂直显示),选中列索引(水平显示)</param>
|
|||
|
|
/// <param name="style">数据显示方式</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public string[] GetColNameColValue(DataTable ViewDt, int rcex, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
string cname = "";
|
|||
|
|
string cvalue = "";
|
|||
|
|
string[] Name_Value = new string[2];
|
|||
|
|
if (style == ShowStyle.horizontal)
|
|||
|
|
{
|
|||
|
|
if (rcex > 0)
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < ViewDt.Rows.Count; i++)
|
|||
|
|
{
|
|||
|
|
cname += ViewDt.Rows[i][0].ToString() + ",";
|
|||
|
|
cvalue += "'" + ViewDt.Rows[i][rcex].ToString() + "',";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < ViewDt.Columns.Count; i++)
|
|||
|
|
{
|
|||
|
|
cname += ViewDt.Columns[i].ColumnName + ",";
|
|||
|
|
cvalue += "'" + ViewDt.Rows[rcex][i].ToString() + "',";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (cname != "" && cvalue != "")
|
|||
|
|
{
|
|||
|
|
Name_Value[0] = cname.Substring(0, cname.Length - 1);
|
|||
|
|
Name_Value[1] = cvalue.Substring(0, cvalue.Length - 1);
|
|||
|
|
}
|
|||
|
|
return Name_Value;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 删除SQL语句获取
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="table_name">表名</param>
|
|||
|
|
/// <param name="rcex">记录中当前单元格的列索引</param>
|
|||
|
|
/// <param name="Ddata">DataTable数据源</param>
|
|||
|
|
/// <param name="style">数据源显示方式</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public string DeleteSQL(string table_name, int rcex, DataTable Ddata, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
string ModName = "";
|
|||
|
|
string ModValue = "";
|
|||
|
|
string Dsql = "";
|
|||
|
|
int Dex = -1;
|
|||
|
|
StringBuilder StrB = new StringBuilder();
|
|||
|
|
if (style == ShowStyle.horizontal)
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < Ddata.Rows.Count; i++)
|
|||
|
|
{
|
|||
|
|
if (Ddata.Rows[i][rcex].ToString().Length > 0)
|
|||
|
|
{
|
|||
|
|
Dex = i; break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (Dex > -1)
|
|||
|
|
{
|
|||
|
|
ModName = Convert.ToString(Ddata.Rows[Dex][0]);
|
|||
|
|
ModValue = Convert.ToString(Ddata.Rows[Dex][rcex]);
|
|||
|
|
Dsql = "delete from " + table_name + " where " + ModName + "='" + ModValue + "'";
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
for (int t1 = 0; t1 < Ddata.Rows.Count; t1++)
|
|||
|
|
{
|
|||
|
|
StrB.Append(Convert.ToString(Ddata.Rows[t1][0]) + " is null and ");
|
|||
|
|
}
|
|||
|
|
Dsql = "delete from " + table_name + " where " + StrB.Remove(StrB.Length - 4, 4);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
for (int n = 0; n < Ddata.Columns.Count; n++)
|
|||
|
|
{
|
|||
|
|
if (Convert.ToString(Ddata.Rows[rcex][n]).Length > 0)
|
|||
|
|
{
|
|||
|
|
Dex = n; break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (Dex > -1)
|
|||
|
|
{
|
|||
|
|
ModName = Ddata.Columns[Dex].ColumnName;
|
|||
|
|
ModValue = Convert.ToString(Ddata.Rows[rcex][Dex]);
|
|||
|
|
Dsql = "delete from " + table_name + " where " + ModName + "='" + ModValue + "'";
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
for (int t3 = 0; t3 < Ddata.Columns.Count; t3++)
|
|||
|
|
{
|
|||
|
|
StrB.Append(Convert.ToString(Ddata.Columns[t3].ColumnName) + " is null and ");
|
|||
|
|
}
|
|||
|
|
Dsql = "delete from " + table_name + " where " + StrB.Remove(StrB.Length - 4, 4);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return Dsql;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 编辑记录时检查记录中的主键值是否与原有主键值重复,true重复,false不重复
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="ViewDt">表中数据信息</param>
|
|||
|
|
/// <param name="rcex">记录所在的索引(水平显示为记录列索引cex),(垂直显示为记录行索引rex)</param>
|
|||
|
|
/// <param name="ColInfoDt">表中字段信息,字段名,类型,非空,键值</param>
|
|||
|
|
/// <param name="style">显示方式</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
private bool UpdateInsertKeyValueCheckRepeat(DataTable ViewDt, int rcex, DataTable ColInfoDt, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
string[,] colInfoArray = GetColInfoArray(ColInfoDt);
|
|||
|
|
string KeyColName = "";//主键字段名
|
|||
|
|
System.Collections.ArrayList KeyColValue = new ArrayList();
|
|||
|
|
string UpdateInsertValue = "";
|
|||
|
|
for (int i = 0; i < colInfoArray.GetLength(0); i++)
|
|||
|
|
{
|
|||
|
|
if (colInfoArray[i, 2].Length > 0)
|
|||
|
|
{
|
|||
|
|
KeyColName += colInfoArray[i, 0].ToString() + ",";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (KeyColName != "")
|
|||
|
|
{
|
|||
|
|
if (KeyColName.Contains(','))
|
|||
|
|
{
|
|||
|
|
string[] keyname = KeyColName.Split(',');
|
|||
|
|
|
|||
|
|
if (keyname.Length > 0)
|
|||
|
|
{
|
|||
|
|
if (style == ShowStyle.horizontal)
|
|||
|
|
{
|
|||
|
|
List<int> index = new List<int>();//水平显示主键行索引
|
|||
|
|
for (int j = 0; j < keyname.Length - 1; j++)
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < ViewDt.Rows.Count; i++)
|
|||
|
|
{
|
|||
|
|
if (keyname[j].Equals(ViewDt.Rows[i][0]))
|
|||
|
|
{
|
|||
|
|
index.Add(i);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
for (int t = 1; t < ViewDt.Columns.Count; t++)//水平显示所有列主键元素组合串数组
|
|||
|
|
{
|
|||
|
|
string value = "";
|
|||
|
|
for (int m = 0; m < index.Count; m++)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
value += ViewDt.Rows[index[m]][t].ToString() + ";";
|
|||
|
|
}
|
|||
|
|
if (t != rcex)
|
|||
|
|
{
|
|||
|
|
KeyColValue.Add(value.Substring(0, value.Length - 1));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
UpdateInsertValue = value.Substring(0, value.Length - 1);//更新插入主键组合串
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
if (KeyColValue.Count > 0)
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < KeyColValue.Count; i++)
|
|||
|
|
{
|
|||
|
|
if (KeyColValue[i].Equals(UpdateInsertValue))
|
|||
|
|
{
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else//第2种显示风格垂直
|
|||
|
|
{
|
|||
|
|
List<int> index = new List<int>();
|
|||
|
|
for (int j = 0; j < keyname.Length - 1; j++)
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < ViewDt.Columns.Count; i++)
|
|||
|
|
{
|
|||
|
|
if (keyname[j].Equals(ViewDt.Columns[i].ColumnName))
|
|||
|
|
{
|
|||
|
|
index.Add(i);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
for (int t = 0; t < ViewDt.Rows.Count; t++)//none垂直显示所有行主键元素组合串数组
|
|||
|
|
{
|
|||
|
|
string value = "";
|
|||
|
|
for (int m = 0; m < index.Count; m++)
|
|||
|
|
{
|
|||
|
|
value += ViewDt.Rows[t][index[m]].ToString() + ";";
|
|||
|
|
}
|
|||
|
|
if (t != rcex)
|
|||
|
|
{
|
|||
|
|
KeyColValue.Add(value.Substring(0, value.Length - 1));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
UpdateInsertValue = value.Substring(0, value.Length - 1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
if (KeyColValue.Count > 0)
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < KeyColValue.Count; i++)
|
|||
|
|
{
|
|||
|
|
if (KeyColValue[i].Equals(UpdateInsertValue))
|
|||
|
|
{
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 将数据库列字段非空属性及主键信息转成二维数组,返回一个(n,3)的二维数组,0列字段名,1列字段类型,2列字段主键信息(为空说明只是非空要求并非主键),
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="filepath">文件路径</param>
|
|||
|
|
/// <returns>将文件主要信息存储到二维数组中,并返回该二维数组</returns>
|
|||
|
|
public string[,] GetColInfoArray(DataTable colInfodt)
|
|||
|
|
{
|
|||
|
|
System.Collections.ArrayList colArray = new ArrayList();
|
|||
|
|
if (colInfodt == null)
|
|||
|
|
return null;
|
|||
|
|
for (int i = 0; i < colInfodt.Rows.Count; i++)
|
|||
|
|
{
|
|||
|
|
if (colInfodt.Rows[i][2].ToString() != "Y")
|
|||
|
|
{
|
|||
|
|
colArray.Add(Convert.ToString(colInfodt.Rows[i][0]) + ";" + Convert.ToString(colInfodt.Rows[i][1]) + ";" + Convert.ToString(colInfodt.Rows[i][3]));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
string[,] Adata = new string[colArray.Count, 3];
|
|||
|
|
if (colArray.Count > 0)
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < colArray.Count; i++)
|
|||
|
|
{
|
|||
|
|
string StrSample = colArray[i].ToString();
|
|||
|
|
if (StrSample.Contains(';'))
|
|||
|
|
{
|
|||
|
|
string[] StrResult = StrSample.Split(';');
|
|||
|
|
if (StrResult.Length >= 3)
|
|||
|
|
{
|
|||
|
|
Adata[i, 0] = StrResult[0];
|
|||
|
|
Adata[i, 1] = StrResult[1];
|
|||
|
|
Adata[i, 2] = StrResult[2];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return Adata;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 文件操作类
|
|||
|
|
/// </summary>
|
|||
|
|
public class FileUse
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 文件中存储的表名和显示方式的提取
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="filename"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string[] Load_NameStyle(string filename)
|
|||
|
|
{
|
|||
|
|
string[] data = new string[4];
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (File.Exists(filename))
|
|||
|
|
{
|
|||
|
|
XmlDocument doc = new XmlDocument();
|
|||
|
|
doc.Load(filename);
|
|||
|
|
XmlNodeList xn1 = doc.ChildNodes;
|
|||
|
|
foreach (XmlNode xn2 in xn1)
|
|||
|
|
{
|
|||
|
|
foreach (XmlNode xn3 in xn2.ChildNodes)
|
|||
|
|
{
|
|||
|
|
if (xn3.Name == "PriElement")
|
|||
|
|
{
|
|||
|
|
data[0] = xn3.Attributes["Recordset"].Value;
|
|||
|
|
data[1] = xn3.Attributes["ShowStyle"].Value;
|
|||
|
|
data[2] = xn3.Attributes["TableNameType"].Value;
|
|||
|
|
data[3] = xn3.Attributes["DataBaseType"].Value;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch
|
|||
|
|
{
|
|||
|
|
//throw;
|
|||
|
|
}
|
|||
|
|
return data;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// string到ShowStyle的转换
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="str">字符类型</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static ShowStyle FileStringToEnum(string str)
|
|||
|
|
{
|
|||
|
|
if (str.Equals(ShowStyle.horizontal.ToString()))
|
|||
|
|
{
|
|||
|
|
return ShowStyle.horizontal;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
return ShowStyle.vertical;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 设置信息转换数组集合
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="setdata">设置信息集合</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string[,] GetSetInfo(System.Collections.ArrayList setdata)
|
|||
|
|
{
|
|||
|
|
string[,] SetInfo = new string[setdata.Count, 14];
|
|||
|
|
if (setdata.Count > 0)
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < setdata.Count; i++)
|
|||
|
|
{
|
|||
|
|
string setstr = setdata[i].ToString();
|
|||
|
|
if (setstr.Contains(';'))
|
|||
|
|
{
|
|||
|
|
string[] sdata = setstr.Split(';');
|
|||
|
|
if (sdata.Length >= 14)
|
|||
|
|
{
|
|||
|
|
for (int n = 0; n < sdata.Length - 1; n++)
|
|||
|
|
{
|
|||
|
|
SetInfo[i, n] = sdata[n];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return SetInfo;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 文件中设置信息提取
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="fileName"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static System.Collections.ArrayList GetSetData(string fileName)
|
|||
|
|
{
|
|||
|
|
System.Collections.ArrayList SetData = new ArrayList();
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (File.Exists(fileName))
|
|||
|
|
{
|
|||
|
|
XmlDocument doc = new XmlDocument();
|
|||
|
|
doc.Load(fileName);
|
|||
|
|
XmlNodeList xn1 = doc.ChildNodes;
|
|||
|
|
foreach (XmlNode xn2 in xn1)
|
|||
|
|
{
|
|||
|
|
foreach (XmlNode xn3 in xn2.ChildNodes)
|
|||
|
|
{
|
|||
|
|
if (xn3.Name == "SetInfo")
|
|||
|
|
{
|
|||
|
|
foreach (XmlNode xn4 in xn3.ChildNodes)
|
|||
|
|
{
|
|||
|
|
if (xn4.Name == "Param")
|
|||
|
|
{
|
|||
|
|
string str = "";
|
|||
|
|
for (int i = 0; i < xn4.Attributes.Count; i++)
|
|||
|
|
{
|
|||
|
|
str += xn4.Attributes[i].Value + ";";
|
|||
|
|
}
|
|||
|
|
SetData.Add(str);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch
|
|||
|
|
{
|
|||
|
|
//throw;
|
|||
|
|
}
|
|||
|
|
return SetData;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取存储在文件里的上下限;
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="filename"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static System.Collections.ArrayList GetUpDownLimit(string filename)
|
|||
|
|
{
|
|||
|
|
System.Collections.ArrayList UpDownLimt = new ArrayList();
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (File.Exists(filename))
|
|||
|
|
{
|
|||
|
|
XmlDocument doc = new XmlDocument();
|
|||
|
|
doc.Load(filename);
|
|||
|
|
XmlNodeList xn1 = doc.ChildNodes;
|
|||
|
|
foreach (XmlNode xn2 in xn1)
|
|||
|
|
{
|
|||
|
|
foreach (XmlNode xn3 in xn2.ChildNodes)
|
|||
|
|
{
|
|||
|
|
if (xn3.Name == "SetInfo")
|
|||
|
|
{
|
|||
|
|
foreach (XmlNode xn4 in xn3.ChildNodes)
|
|||
|
|
{
|
|||
|
|
if (xn4.Name == "Param")
|
|||
|
|
{
|
|||
|
|
string str = "";
|
|||
|
|
str += xn4.Attributes[0].Value + ";" + xn4.Attributes[7].Value + ";" + xn4.Attributes[8].Value + ";";
|
|||
|
|
UpDownLimt.Add(str);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch
|
|||
|
|
{
|
|||
|
|
//throw;
|
|||
|
|
}
|
|||
|
|
return UpDownLimt;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// DB2数据库操作类
|
|||
|
|
/// </summary>
|
|||
|
|
//public class DB2Utility
|
|||
|
|
//{
|
|||
|
|
// private static DB2Utility aInstance;
|
|||
|
|
// public string ConnectionString = "Provider=IBMDADB2";
|
|||
|
|
// private DB2Utility()
|
|||
|
|
// { }
|
|||
|
|
// public static DB2Utility Instance
|
|||
|
|
// {
|
|||
|
|
// get
|
|||
|
|
// {
|
|||
|
|
// if (aInstance == null)
|
|||
|
|
// aInstance = new DB2Utility();
|
|||
|
|
// return aInstance;
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// }
|
|||
|
|
// private Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
|
|||
|
|
// public int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params OleDbParameter[] commandParameters)
|
|||
|
|
// {
|
|||
|
|
// OleDbCommand cmd = new OleDbCommand();
|
|||
|
|
// using (OleDbConnection connection = new OleDbConnection(connectionString))
|
|||
|
|
// {
|
|||
|
|
// PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
|
|||
|
|
// int val = cmd.ExecuteNonQuery();
|
|||
|
|
// cmd.Parameters.Clear();
|
|||
|
|
// try
|
|||
|
|
// {
|
|||
|
|
// connection.Close();
|
|||
|
|
// }
|
|||
|
|
// catch
|
|||
|
|
// {
|
|||
|
|
// //throw;
|
|||
|
|
// }
|
|||
|
|
// return val;
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
|
|||
|
|
// }
|
|||
|
|
// public int ExecuteNonQuery(OleDbTransaction trans, CommandType cmdType, string cmdText, params OleDbParameter[] commandParameters)
|
|||
|
|
// {
|
|||
|
|
// OleDbCommand cmd = new OleDbCommand();
|
|||
|
|
// PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
|
|||
|
|
// int val = cmd.ExecuteNonQuery();
|
|||
|
|
// cmd.Parameters.Clear();
|
|||
|
|
// return val;
|
|||
|
|
// }
|
|||
|
|
// public int ExecuteNonQuery(OleDbConnection connection, CommandType cmdType, string cmdText, params OleDbParameter[] commandParameters)
|
|||
|
|
// {
|
|||
|
|
// try
|
|||
|
|
// {
|
|||
|
|
// OleDbCommand cmd = new OleDbCommand();
|
|||
|
|
// PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
|
|||
|
|
// int val = cmd.ExecuteNonQuery();
|
|||
|
|
// cmd.Parameters.Clear();
|
|||
|
|
// return val;
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// catch
|
|||
|
|
// {
|
|||
|
|
// return -1;//throw;
|
|||
|
|
// }
|
|||
|
|
// finally
|
|||
|
|
// {
|
|||
|
|
// connection.Close();
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// }
|
|||
|
|
// string str1;
|
|||
|
|
// public OleDbDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params OleDbParameter[] commandParameters)
|
|||
|
|
// {
|
|||
|
|
// str1 = "DataAccess:OleDbDataReader1:" + System.DateTime.Now.Second + ":" + System.DateTime.Now.Millisecond + Environment.NewLine;
|
|||
|
|
// OleDbCommand cmd = new OleDbCommand();
|
|||
|
|
// OleDbConnection conn = new OleDbConnection(connectionString);
|
|||
|
|
// //try
|
|||
|
|
// //{
|
|||
|
|
// str1 += "DataAccess:OleDbDataReader2:" + System.DateTime.Now.Second + ":" + System.DateTime.Now.Millisecond + Environment.NewLine;
|
|||
|
|
// PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
|
|||
|
|
// str1 += "DataAccess:OleDbDataReader-->:" + System.DateTime.Now.Second + ": " + DateTime.Now.Millisecond + Environment.NewLine;
|
|||
|
|
// OleDbDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
|
|||
|
|
// str1 += "DataAccess:OleDbDataReader-->:" + System.DateTime.Now.Second + ": " + DateTime.Now.Millisecond + Environment.NewLine;
|
|||
|
|
// cmd.Parameters.Clear();
|
|||
|
|
// str1 += "DataAccess:OleDbDataReader3:" + System.DateTime.Now.Second + ": " + DateTime.Now.Millisecond + Environment.NewLine;
|
|||
|
|
// Console.WriteLine(str1);
|
|||
|
|
// return rdr;
|
|||
|
|
// //}
|
|||
|
|
// //catch
|
|||
|
|
// //{
|
|||
|
|
// conn.Close();
|
|||
|
|
// //throw;
|
|||
|
|
// //}
|
|||
|
|
// }
|
|||
|
|
// public object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params OleDbParameter[] commandParameters)
|
|||
|
|
// {
|
|||
|
|
// OleDbCommand cmd = new OleDbCommand();
|
|||
|
|
// using (OleDbConnection conn = new OleDbConnection(connectionString))
|
|||
|
|
// {
|
|||
|
|
// PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
|
|||
|
|
// object val = cmd.ExecuteScalar();
|
|||
|
|
// cmd.Parameters.Clear();
|
|||
|
|
// return val;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// public object ExecuteScalar(OleDbTransaction transaction, CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
|
|||
|
|
// {
|
|||
|
|
// if (transaction == null)
|
|||
|
|
// throw new ArgumentNullException("transaction");
|
|||
|
|
// if (transaction != null && transaction.Connection == null)
|
|||
|
|
// throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction");
|
|||
|
|
|
|||
|
|
// OleDbCommand cmd = new OleDbCommand();
|
|||
|
|
// PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);
|
|||
|
|
// object retval = cmd.ExecuteScalar();
|
|||
|
|
// cmd.Parameters.Clear();
|
|||
|
|
// return retval;
|
|||
|
|
// }
|
|||
|
|
// public object ExecuteScalar(OleDbConnection connectionString, CommandType cmdType, string cmdText, params OleDbParameter[] commandParameters)
|
|||
|
|
// {
|
|||
|
|
// try
|
|||
|
|
// {
|
|||
|
|
// OleDbCommand cmd = new OleDbCommand();
|
|||
|
|
// PrepareCommand(cmd, connectionString, null, cmdType, cmdText, commandParameters);
|
|||
|
|
// object val = cmd.ExecuteScalar();
|
|||
|
|
// cmd.Parameters.Clear();
|
|||
|
|
// return val;
|
|||
|
|
// }
|
|||
|
|
// catch
|
|||
|
|
// {
|
|||
|
|
// return -1;
|
|||
|
|
// //throw;
|
|||
|
|
// }
|
|||
|
|
// finally
|
|||
|
|
// {
|
|||
|
|
// connectionString.Close();
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// public void CacheParameters(string cacheKey, params OleDbParameter[] commandParameters)
|
|||
|
|
// {
|
|||
|
|
// parmCache[cacheKey] = commandParameters;
|
|||
|
|
// }
|
|||
|
|
// public OleDbParameter[] GetCachedParameters(string cacheKey)
|
|||
|
|
// {
|
|||
|
|
// OleDbParameter[] cachedParms = (OleDbParameter[])parmCache[cacheKey];
|
|||
|
|
// if (cachedParms == null)
|
|||
|
|
// return null;
|
|||
|
|
// OleDbParameter[] clonedParms = new OleDbParameter[cachedParms.Length];
|
|||
|
|
// for (int i = 0, j = cachedParms.Length; i < j; i++)
|
|||
|
|
// clonedParms[i] = (OleDbParameter)((ICloneable)cachedParms[i]).Clone();
|
|||
|
|
// return clonedParms;
|
|||
|
|
// }
|
|||
|
|
// private void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, CommandType cmdType, string cmdText, OleDbParameter[] commandParameters)
|
|||
|
|
// {
|
|||
|
|
// if (conn == null)
|
|||
|
|
// conn = new OleDbConnection(ConnectionString);
|
|||
|
|
// if (conn.State != ConnectionState.Open)
|
|||
|
|
// conn.Open();//打开数据源
|
|||
|
|
// cmd.Connection = conn;//将conn实例的数据传递给cmd实例
|
|||
|
|
|
|||
|
|
// cmd.CommandText = cmdText; //sql语句赋值给commandtext
|
|||
|
|
// cmd.CommandType = cmdType;
|
|||
|
|
|
|||
|
|
// if (trans != null)
|
|||
|
|
// cmd.Transaction = trans;
|
|||
|
|
|
|||
|
|
// if (commandParameters != null)
|
|||
|
|
// {
|
|||
|
|
// foreach (OleDbParameter parm in commandParameters)
|
|||
|
|
// cmd.Parameters.Add(parm);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 控件数据库连接DBString属性未初始化异常类
|
|||
|
|
/// </summary>
|
|||
|
|
public class DBstringNullException : ApplicationException
|
|||
|
|
{
|
|||
|
|
public DBstringNullException(string msg) : base(msg) { }
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 数据库数据读写实例类
|
|||
|
|
/// </summary>
|
|||
|
|
public class DB2Access : IDBAccess
|
|||
|
|
{
|
|||
|
|
private static DB2Access instance;
|
|||
|
|
public static DB2Access Instance
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
if (instance == null)
|
|||
|
|
{ instance = new DB2Access(); }
|
|||
|
|
return instance;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 表名带显示方式的数据查询(提供表名检测)
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="sql_tablename">表名</param>
|
|||
|
|
/// <param name="connectionstring">数据库连接字符串</param>
|
|||
|
|
/// <param name="style">数据显示方式</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public DataTable GetTableData(string tablename, string connectionstring, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
string s_ql = "select * from " + tablename.ToUpper();
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
dt = Model.TransFormDataTable(dt, style);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取表中各字段的信息
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="tablename">表名</param>
|
|||
|
|
/// <param name="connectionstring">数据库连接字符串</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public DataTable GetColumnInfo(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
string user = "";
|
|||
|
|
string[] st = connectionstring.Split(new char[] { '=', ';' });
|
|||
|
|
user = st[5].TrimStart().TrimEnd();
|
|||
|
|
string s_ql = "select colname,typename,nulls,keyseq,length from syscat.columns where upper (tabschema) ='" + user.ToUpper() + "' and upper(tabname)='" + tablename.ToUpper() + "'order by COLNO asc";
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable GetTableData(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
string s_ql = "select * from " + tablename.ToUpper();
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// SQL查询数据库数据
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectionstring">数据库连接字符串</param>
|
|||
|
|
/// <param name="sql">SQL语句</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
private DataTable GetData(string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
DataTable dt = new DataTable();
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
using (OleDbDataReader odr = DB2DBUtility.Instance.ExecuteReader(connectionstring, CommandType.Text, sql))
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < odr.FieldCount; i++)
|
|||
|
|
{
|
|||
|
|
DataColumn dc = new DataColumn();
|
|||
|
|
dc.ColumnName = odr.GetName(i);
|
|||
|
|
dt.Columns.Add(dc);
|
|||
|
|
}
|
|||
|
|
while (odr.Read())
|
|||
|
|
{
|
|||
|
|
DataRow dr = dt.NewRow();
|
|||
|
|
for (int i = 0; i < odr.FieldCount; i++)
|
|||
|
|
{
|
|||
|
|
dr[i] = odr[i];
|
|||
|
|
}
|
|||
|
|
dt.Rows.Add(dr);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
throw ex;
|
|||
|
|
}
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 带显示方式的SQL查询
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectionstring"></param>
|
|||
|
|
/// <param name="sql"></param>
|
|||
|
|
/// <param name="style"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public DataTable GetData(string connectionstring, string sql, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
DataTable dt = GetData(connectionstring, sql);
|
|||
|
|
dt = Model.TransFormDataTable(dt, style);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取表的状态,是否可用
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectionstring"></param>
|
|||
|
|
/// <param name="sql"></param>
|
|||
|
|
/// <returns></returns>status 为0 时可用;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 数据库中用户表表名的获取
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectiongstring"></param>
|
|||
|
|
/// <param name="TableSchema"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public Dictionary<string, string> GetTableName(string connectiongstring, string TableSchema)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
string sql = "select name from SYSIBM.SYSTABLES where CREATOR='" + TableSchema.ToUpper() + "' AND type = 'T' order by name";// "select TABLE_NAME from SYSIBM.TABLES where TABLE_SCHEMA='" + TableSchema.ToUpper() + "' order by TABLE_NAME";
|
|||
|
|
string sql1 = " select NAME from SYSIBM.SYSVIEWS where CREATOR='" + TableSchema.ToUpper() + "' order by name";
|
|||
|
|
Dictionary<string, string> dt = new Dictionary<string, string>();
|
|||
|
|
using (OleDbDataReader odr = DB2DBUtility.Instance.ExecuteReader(connectiongstring, CommandType.Text, sql))
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
while (odr.Read())
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < odr.FieldCount; i++)
|
|||
|
|
{
|
|||
|
|
dt.Add(odr[i].ToString(), "T");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
using (OleDbDataReader odr = DB2DBUtility.Instance.ExecuteReader(connectiongstring, CommandType.Text, sql1))
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
while (odr.Read())
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < odr.FieldCount; i++)
|
|||
|
|
{
|
|||
|
|
dt.Add(odr[i].ToString(), "V");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return dt;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
public DataTable DataBase(string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
//String.Format("update {0} SET EXTID= '{0} where SEQNO = 64479 ", tablename.ToUpper());
|
|||
|
|
DataTable dt = GetData(connectionstring, sql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelTableData(string tablename, string connectionstring, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
DataTable dt = new DataTable();
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelTableData(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
//string s_ql = string.Format("select * from {0} order by PRODEND DESC fetch first 1 rows only", tablename.ToUpper());
|
|||
|
|
string s_ql = string.Format("select * from {0} fetch first 1 rows only", tablename.ToUpper());
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelTableData(string tablename, string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
DataTable dt = GetData(connectionstring, sql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelStatusTable(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
string s_ql = string.Format("select * from {0} where STATUS='0'", tablename.ToUpper());
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// postgres数据库数据读写实例类
|
|||
|
|
/// </summary>
|
|||
|
|
public class PgAccess : IDBAccess
|
|||
|
|
{
|
|||
|
|
private static PgAccess instance;
|
|||
|
|
public static PgAccess Instance
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
if (instance == null)
|
|||
|
|
{ instance = new PgAccess(); }
|
|||
|
|
return instance;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 表名带显示方式的数据查询(提供表名检测)
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="sql_tablename">表名</param>
|
|||
|
|
/// <param name="connectionstring">数据库连接字符串</param>
|
|||
|
|
/// <param name="style">数据显示方式</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public DataTable GetTableData(string tablename, string connectionstring, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
string s_ql = "select * from " + tablename.ToUpper();
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
dt = Model.TransFormDataTable(dt, style);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取表中各字段的信息
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="tablename">表名</param>
|
|||
|
|
/// <param name="connectionstring">数据库连接字符串</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public DataTable GetColumnInfo(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
string user = "";
|
|||
|
|
string[] st = connectionstring.Split(new char[] { '=', ';' });
|
|||
|
|
user = st[5].TrimStart().TrimEnd();
|
|||
|
|
string s_ql = "select colname,typename,nulls,keyseq,length from syscat.columns where upper (tabschema) ='" + user.ToUpper() + "' and upper(tabname)='" + tablename.ToUpper() + "'order by COLNO asc";
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable GetTableData(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
string s_ql = "select * from " + tablename.ToUpper();
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// SQL查询数据库数据
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectionstring">数据库连接字符串</param>
|
|||
|
|
/// <param name="sql">SQL语句</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
private DataTable GetData(string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
DataTable dt = new DataTable();
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
using (NpgsqlDataReader odr = PgDBUtility.Instance.ExecuteReader(connectionstring, CommandType.Text, sql))
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
for (int i = 0; i < odr.FieldCount; i++)
|
|||
|
|
{
|
|||
|
|
DataColumn dc = new DataColumn();
|
|||
|
|
dc.ColumnName = odr.GetName(i);
|
|||
|
|
dt.Columns.Add(dc);
|
|||
|
|
}
|
|||
|
|
while (odr.Read())
|
|||
|
|
{
|
|||
|
|
DataRow dr = dt.NewRow();
|
|||
|
|
for (int i = 0; i < odr.FieldCount; i++)
|
|||
|
|
{
|
|||
|
|
dr[i] = odr[i];
|
|||
|
|
}
|
|||
|
|
dt.Rows.Add(dr);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
//throw ;
|
|||
|
|
throw new Exception(ex.Message);
|
|||
|
|
}
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 带显示方式的SQL查询
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectionstring"></param>
|
|||
|
|
/// <param name="sql"></param>
|
|||
|
|
/// <param name="style"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public DataTable GetData(string connectionstring, string sql, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
DataTable dt = GetData(connectionstring, sql);
|
|||
|
|
dt = Model.TransFormDataTable(dt, style);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取表的状态,是否可用
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectionstring"></param>
|
|||
|
|
/// <param name="sql"></param>
|
|||
|
|
/// <returns></returns>status 为0 时可用;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 数据库中用户表表名的获取
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectiongstring"></param>
|
|||
|
|
/// <param name="TableSchema"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public Dictionary<string, string> GetTableName(string connectiongstring, string TableSchema)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
//string sql = "select name from SYSIBM.SYSTABLES where CREATOR='" + TableSchema.ToUpper() + "' AND type = 'T' order by name";// "select TABLE_NAME from SYSIBM.TABLES where TABLE_SCHEMA='" + TableSchema.ToUpper() + "' order by TABLE_NAME";
|
|||
|
|
//string sql1 = " select NAME from SYSIBM.SYSVIEWS where CREATOR='" + TableSchema.ToUpper() + "' order by name";
|
|||
|
|
Dictionary<string, string> dt = new Dictionary<string, string>();
|
|||
|
|
//using (OleDbDataReader odr = DB2DBUtility.Instance.ExecuteReader(connectiongstring, CommandType.Text, sql))
|
|||
|
|
//{
|
|||
|
|
|
|||
|
|
// while (odr.Read())
|
|||
|
|
// {
|
|||
|
|
// for (int i = 0; i < odr.FieldCount; i++)
|
|||
|
|
// {
|
|||
|
|
// dt.Add(odr[i].ToString(), "T");
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
//using (OleDbDataReader odr = DB2DBUtility.Instance.ExecuteReader(connectiongstring, CommandType.Text, sql1))
|
|||
|
|
//{
|
|||
|
|
|
|||
|
|
// while (odr.Read())
|
|||
|
|
// {
|
|||
|
|
// for (int i = 0; i < odr.FieldCount; i++)
|
|||
|
|
// {
|
|||
|
|
// dt.Add(odr[i].ToString(), "V");
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
return dt;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
public DataTable DataBase(string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
DataTable dt = GetData(connectionstring, sql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelTableData(string tablename, string connectionstring, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
DataTable dt = new DataTable();
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelTableData(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
//string s_ql = string.Format("select * from {0} order by PRODEND DESC fetch first 1 rows only", tablename.ToUpper());
|
|||
|
|
string s_ql = string.Format("select * from {0} fetch first 1 rows only", tablename.ToUpper());
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelTableData(string tablename, string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
DataTable dt = GetData(connectionstring, sql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelStatusTable(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
string s_ql = string.Format("select * from {0} where STATUS='0'", tablename.ToUpper());
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 接口类(数据库访问)
|
|||
|
|
/// </summary>
|
|||
|
|
public interface IDBAccess
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 依据表名获取数据库中表数据
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="tablename">表名</param>
|
|||
|
|
/// <param name="connectionstring">数据库连接字符串</param>
|
|||
|
|
/// <param name="style">显示方式</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
DataTable GetTableData(string tablename, string connectionstring, ShowStyle style);
|
|||
|
|
/// <summary>
|
|||
|
|
/// 依据表名获取数据库中表字段的信息
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="tablename">表名</param>
|
|||
|
|
/// <param name="connectionstring">数据库连接字符串</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
DataTable GetColumnInfo(string tablename, string connectionstring);
|
|||
|
|
DataTable GetTableData(string tablename, string connectionstring);
|
|||
|
|
DataTable SelTableData(string tablename, string connectionstring, ShowStyle style);
|
|||
|
|
DataTable SelTableData(string tablename, string connectionstring);
|
|||
|
|
DataTable SelTableData(string tablename, string connectionstring, string sql);
|
|||
|
|
DataTable SelStatusTable(string tablename, string connectionstring);
|
|||
|
|
/// <summary>
|
|||
|
|
/// 带显示方式的SQL语句查询数据库信息
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectionstring">数据库连接字符串</param>
|
|||
|
|
/// <param name="sql">查询SQL语句</param>
|
|||
|
|
/// <param name="style">显示方式</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
DataTable GetData(string connectionstring, string sql, ShowStyle style);
|
|||
|
|
DataTable DataBase(string connectionstring, string sql);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取数据库当前用户下所有用户表名
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectiongstring"></param>
|
|||
|
|
/// <param name="tableschema"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
Dictionary<string, string> GetTableName(string connectiongstring, string TableSchema);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 工厂类(数据库访问)
|
|||
|
|
/// </summary>
|
|||
|
|
public class DBFactory
|
|||
|
|
{
|
|||
|
|
public static IDBAccess CreateAccess(string dbType)
|
|||
|
|
{
|
|||
|
|
if (dbType.ToUpper() == "DB2")
|
|||
|
|
{
|
|||
|
|
return new DB2Access();
|
|||
|
|
}
|
|||
|
|
else if (dbType.ToUpper() == "ORACLE")
|
|||
|
|
{
|
|||
|
|
return new OracleAccess();
|
|||
|
|
}
|
|||
|
|
else if (dbType.ToUpper() == "ACCESS")
|
|||
|
|
{
|
|||
|
|
return new AceAccess();
|
|||
|
|
}
|
|||
|
|
else if (dbType.ToUpper() == "POSTGRES")
|
|||
|
|
{
|
|||
|
|
return new PgAccess();
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
return new OtherAccess();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// Oracle数据库访问类
|
|||
|
|
/// </summary>
|
|||
|
|
public class OracleAccess : IDBAccess
|
|||
|
|
{
|
|||
|
|
///// <summary>
|
|||
|
|
///// Oracle数据库存储insert,delete,update
|
|||
|
|
///// </summary>
|
|||
|
|
///// <param name="connectionstring">连接字符串</param>
|
|||
|
|
///// <param name="sql">SQL语句</param>
|
|||
|
|
///// <returns></returns>
|
|||
|
|
//public int ExecuteNonQuery(string connectionstring, CommandType cmdType, string cmdText)
|
|||
|
|
//{
|
|||
|
|
// OracleConnection oracon = new OracleConnection(connectionstring);
|
|||
|
|
// try
|
|||
|
|
// {
|
|||
|
|
// OracleCommand cmd = new OracleCommand();
|
|||
|
|
// cmd.CommandType = cmdType;
|
|||
|
|
// cmd.CommandText = cmdText;
|
|||
|
|
// cmd.Connection = oracon;
|
|||
|
|
// if (oracon.State == ConnectionState.Closed)
|
|||
|
|
// {
|
|||
|
|
// oracon.Open();
|
|||
|
|
// }
|
|||
|
|
// int val = cmd.ExecuteNonQuery();
|
|||
|
|
// return val;
|
|||
|
|
// }
|
|||
|
|
// catch
|
|||
|
|
// {
|
|||
|
|
// return 0;
|
|||
|
|
// //throw;
|
|||
|
|
// }
|
|||
|
|
// finally
|
|||
|
|
// {
|
|||
|
|
// oracon.Close();
|
|||
|
|
// oracon.Dispose();
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
/// <summary>
|
|||
|
|
/// Oracle数据库读取操作,select的SQL语句
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectionString">数据库连接字符串</param>
|
|||
|
|
/// <param name="cmdType">命令字符串</param>
|
|||
|
|
/// <param name="cmdText">SQL</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public OracleDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
OracleConnection oracon = new OracleConnection(connectionString);
|
|||
|
|
|
|||
|
|
//try
|
|||
|
|
//{
|
|||
|
|
OracleCommand cmd = new OracleCommand();
|
|||
|
|
cmd.CommandType = cmdType;
|
|||
|
|
cmd.CommandText = cmdText;
|
|||
|
|
cmd.Connection = oracon;
|
|||
|
|
if (oracon.State != ConnectionState.Open)
|
|||
|
|
{
|
|||
|
|
oracon.Open();
|
|||
|
|
}
|
|||
|
|
OracleDataReader odr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
|
|||
|
|
return odr;
|
|||
|
|
//}
|
|||
|
|
//catch
|
|||
|
|
//{
|
|||
|
|
// oracon.Close();
|
|||
|
|
// return null;
|
|||
|
|
//}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 带显示方式的SQL语句查询
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectionstring"></param>
|
|||
|
|
/// <param name="sql"></param>
|
|||
|
|
/// <param name="style"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public DataTable GetData(string connectionstring, string sql, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
DataTable dt = GetData(connectionstring, sql);
|
|||
|
|
dt = Model.TransFormDataTable(dt, style);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// SQL语句查询
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectionstring"></param>
|
|||
|
|
/// <param name="sql"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
private DataTable GetData(string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
DataTable dt = new DataTable();
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
using (OracleDataReader odr = ExecuteReader(connectionstring, CommandType.Text, sql))
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < odr.FieldCount; i++)
|
|||
|
|
{
|
|||
|
|
DataColumn dc = new DataColumn();
|
|||
|
|
dc.ColumnName = odr.GetName(i);
|
|||
|
|
dt.Columns.Add(dc);
|
|||
|
|
}
|
|||
|
|
while (odr.Read())
|
|||
|
|
{
|
|||
|
|
DataRow dr = dt.NewRow();
|
|||
|
|
for (int j = 0; j < odr.FieldCount; j++)
|
|||
|
|
{
|
|||
|
|
dr[j] = odr[j];
|
|||
|
|
}
|
|||
|
|
dt.Rows.Add(dr);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
throw ex;
|
|||
|
|
}
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取value值
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectionstring"></param>
|
|||
|
|
/// <param name="sql"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public string GetTableValue(string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
string value = "";
|
|||
|
|
using (OracleDataReader odr = ExecuteReader(connectionstring, CommandType.Text, sql))
|
|||
|
|
{
|
|||
|
|
if (odr.Read())
|
|||
|
|
{
|
|||
|
|
value = Convert.ToString(odr[0]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return value;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取表字段信息
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="tablename"></param>
|
|||
|
|
/// <param name="connectionstring"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public DataTable GetColumnInfo(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
string sql1 = "select COLUMN_NAME,DATA_TYPE, NUllABLE,DECODE (UPPER( data_type),'VARCHAR2',data_length,'VARCHAR',data_length,'CHAR',data_length, data_precision ) data_precision FROM user_tab_cols where table_name='" + tablename.ToUpper() + "'order by COLUMN_ID asc";
|
|||
|
|
string sql2 = "select col.COLUMN_NAME, col.POSITION from user_constraints con, user_cons_columns col where con.CONSTRAINT_NAME=col.CONSTRAINT_NAME and con.CONSTRAINT_TYPE='P' and col.table_name='" + tablename.ToUpper() + "' ";
|
|||
|
|
DataTable dt1 = GetData(connectionstring, sql1);
|
|||
|
|
DataTable dt2 = GetData(connectionstring, sql2);
|
|||
|
|
DataColumn dc = new DataColumn();
|
|||
|
|
dc.ColumnName = "KEYQE";
|
|||
|
|
dt1.Columns.Add(dc);
|
|||
|
|
for (int i = 0; i < dt1.Rows.Count; i++)
|
|||
|
|
{
|
|||
|
|
for (int j = 0; j < dt2.Rows.Count; j++)
|
|||
|
|
{
|
|||
|
|
if (dt1.Rows[i][0].Equals(dt2.Rows[j][0]))
|
|||
|
|
{
|
|||
|
|
dt1.Rows[i][4] = dt2.Rows[j][1];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
dt1.Columns[3].SetOrdinal(4);
|
|||
|
|
return dt1;
|
|||
|
|
}
|
|||
|
|
public DataTable GetTableData(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
string s_ql = "select * from " + tablename.ToUpper();
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 依据表名获取表中数据
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="tablename"></param>
|
|||
|
|
/// <param name="connectionstring"></param>
|
|||
|
|
/// <param name="style"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public DataTable GetTableData(string tablename, string connectionstring, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
string s_ql = "select * from " + tablename.ToUpper() + " where status='0'";
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
dt = Model.TransFormDataTable(dt, style);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取数据库中所有的用户表
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectiongstring"></param>
|
|||
|
|
/// <param name="tableschema"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public Dictionary<string, string> GetTableName(string connectiongstring, string tableschema)
|
|||
|
|
{
|
|||
|
|
Dictionary<string, string> data = new Dictionary<string, string>();
|
|||
|
|
string sql = "select table_name from all_tables where owner='" + tableschema.ToUpper() + "' order by table_name";
|
|||
|
|
string sql1 = "select VIEW_NAME from ALL_VIEWS where OWNER='" + tableschema.ToUpper() + "' order by view_name";
|
|||
|
|
//try
|
|||
|
|
//{
|
|||
|
|
using (OracleDataReader odr = ExecuteReader(connectiongstring, CommandType.Text, sql))
|
|||
|
|
{
|
|||
|
|
while (odr.Read())
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < odr.FieldCount; i++)
|
|||
|
|
{
|
|||
|
|
data.Add(odr[i].ToString(), "T");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
using (OracleDataReader odr = ExecuteReader(connectiongstring, CommandType.Text, sql1))
|
|||
|
|
{
|
|||
|
|
while (odr.Read())
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < odr.FieldCount; i++)
|
|||
|
|
{
|
|||
|
|
data.Add(odr[i].ToString(), "V");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return data;
|
|||
|
|
//}
|
|||
|
|
//catch
|
|||
|
|
//{
|
|||
|
|
// return null;
|
|||
|
|
//}
|
|||
|
|
}
|
|||
|
|
public DataTable DataBase(string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
DataTable dt = GetData(connectionstring, sql);
|
|||
|
|
return dt;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
public DataTable SelTableData(string tablename, string connectionstring, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
string s_ql = "select * from " + tablename.ToUpper();
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
dt = Model.TransFormDataTable(dt, style);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelTableData(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
//string s_ql = string.Format("select HOTCOIL,COLDCOIL,STEELGREADE,ALLOYCODE,EXTWIDTH,ENTHICK,EXTHICK from (select * from {0} order by TOC DESC ) where rownum = 1 ", tablename.ToUpper());
|
|||
|
|
//string s_ql = string.Format("select HOD_COIL_ID,COLD_COIL_ID,ALLOY_CODE,ENTRY_THICKNESS,EXIT_THICKNESS,EXIT_WIDTH from {0} where rownum = 1 ", tablename.ToUpper());
|
|||
|
|
string s_ql = string.Format("select HOT_COIL_ID,COLD_COIL_ID,ALLOY_CODE,EXIT_WIDTH,ENTRY_THICKNESS,EXIT_THICKNESS,ORDER_QUALITY from {0} where rownum = 1 ", tablename.ToUpper());
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelStatusTable(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
string s_ql = string.Format("select * from {0} where STATUS='0'", tablename.ToUpper());
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelTableData(string tablename, string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
DataTable dt = GetData(connectionstring, sql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// Oracle数据库访问类
|
|||
|
|
/// </summary>
|
|||
|
|
public class AceAccess : IDBAccess
|
|||
|
|
{
|
|||
|
|
///// <summary>
|
|||
|
|
///// Oracle数据库存储insert,delete,update
|
|||
|
|
///// </summary>
|
|||
|
|
///// <param name="connectionstring">连接字符串</param>
|
|||
|
|
///// <param name="sql">SQL语句</param>
|
|||
|
|
///// <returns></returns>
|
|||
|
|
//public int ExecuteNonQuery(string connectionstring, CommandType cmdType, string cmdText)
|
|||
|
|
//{
|
|||
|
|
// int ret = -1;
|
|||
|
|
// return ret;
|
|||
|
|
// OracleConnection oracon = new OracleConnection(connectionstring);
|
|||
|
|
// try
|
|||
|
|
// {
|
|||
|
|
// OracleCommand cmd = new OracleCommand();
|
|||
|
|
// cmd.CommandType = cmdType;
|
|||
|
|
// cmd.CommandText = cmdText;
|
|||
|
|
// cmd.Connection = oracon;
|
|||
|
|
// if (oracon.State == ConnectionState.Closed)
|
|||
|
|
// {
|
|||
|
|
// oracon.Open();
|
|||
|
|
// }
|
|||
|
|
// int val = cmd.ExecuteNonQuery();
|
|||
|
|
// return val;
|
|||
|
|
// }
|
|||
|
|
// catch
|
|||
|
|
// {
|
|||
|
|
// //throw;
|
|||
|
|
// }
|
|||
|
|
// finally
|
|||
|
|
// {
|
|||
|
|
// oracon.Close();
|
|||
|
|
// oracon.Dispose();
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
///// <summary>
|
|||
|
|
///// Oracle数据库读取操作,select的SQL语句
|
|||
|
|
///// </summary>
|
|||
|
|
///// <param name="connectionString">数据库连接字符串</param>
|
|||
|
|
///// <param name="cmdType">命令字符串</param>
|
|||
|
|
///// <param name="cmdText">SQL</param>
|
|||
|
|
///// <returns></returns>
|
|||
|
|
//public OracleDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText)
|
|||
|
|
//{
|
|||
|
|
// return null;
|
|||
|
|
// //OracleConnection oracon = new OracleConnection(connectionString);
|
|||
|
|
// ////try
|
|||
|
|
// ////{
|
|||
|
|
// //OracleCommand cmd = new OracleCommand();
|
|||
|
|
// //cmd.CommandType = cmdType;
|
|||
|
|
// //cmd.CommandText = cmdText;
|
|||
|
|
// //cmd.Connection = oracon;
|
|||
|
|
// //if (oracon.State != ConnectionState.Open)
|
|||
|
|
// //{
|
|||
|
|
// // oracon.Open();
|
|||
|
|
// //}
|
|||
|
|
// //OracleDataReader odr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
|
|||
|
|
// //return odr;
|
|||
|
|
// ////}
|
|||
|
|
// ////catch
|
|||
|
|
// ////{
|
|||
|
|
// //// oracon.Close();
|
|||
|
|
// //// return null;
|
|||
|
|
// ////}
|
|||
|
|
//}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 带显示方式的SQL语句查询
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectionstring"></param>
|
|||
|
|
/// <param name="sql"></param>
|
|||
|
|
/// <param name="style"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public DataTable GetData(string connectionstring, string sql, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
DataTable dt = GetData(connectionstring, sql);
|
|||
|
|
dt = Model.TransFormDataTable(dt, style);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// SQL语句查询
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectionstring"></param>
|
|||
|
|
/// <param name="sql"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
private DataTable GetData(string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
DataTable dt = new DataTable();
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
using (OleDbDataReader odr = DB2DBUtility.Instance.ExecuteReader(connectionstring, CommandType.Text, sql))
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < odr.FieldCount; i++)//odr为OleDbDataReader的实例,将access数据库查询的数据读去出来 fieldcount为列数,getname为名称
|
|||
|
|
{
|
|||
|
|
DataColumn dc = new DataColumn();
|
|||
|
|
dc.ColumnName = odr.GetName(i);
|
|||
|
|
dt.Columns.Add(dc);
|
|||
|
|
}
|
|||
|
|
while (odr.Read())
|
|||
|
|
{
|
|||
|
|
DataRow dr = dt.NewRow();
|
|||
|
|
for (int i = 0; i < odr.FieldCount; i++)
|
|||
|
|
{
|
|||
|
|
dr[i] = odr[i];
|
|||
|
|
}
|
|||
|
|
dt.Rows.Add(dr);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
throw new Exception(ex.ToString());
|
|||
|
|
}
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取表字段信息
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="tablename"></param>
|
|||
|
|
/// <param name="connectionstring"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public DataTable GetColumnInfo(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
string sql1 = string.Format("SELECT NAME FROM SYSOBJECTS WHERE ID=OBJECT_ID('{0}')", tablename);
|
|||
|
|
DataTable dt1 = GetData(connectionstring, sql1);
|
|||
|
|
DataColumn dc = new DataColumn();
|
|||
|
|
//dc.ColumnName = "KEYQE";
|
|||
|
|
//dt1.Columns.Add(dc);
|
|||
|
|
//for (int i = 0; i < dt1.Rows.Count; i++)
|
|||
|
|
//{
|
|||
|
|
// for (int j = 0; j < dt2.Rows.Count; j++)
|
|||
|
|
// {
|
|||
|
|
// if (dt1.Rows[i][0].Equals(dt2.Rows[j][0]))
|
|||
|
|
// {
|
|||
|
|
// dt1.Rows[i][4] = dt2.Rows[j][1];
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
//dt1.Columns[3].SetOrdinal(4);
|
|||
|
|
return dt1;
|
|||
|
|
}
|
|||
|
|
public DataTable GetTableData(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
string s_ql = "select * from " + tablename.ToUpper();
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelTableData(string tablename, string connectionstring, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
string s_ql = "select * from " + tablename.ToUpper() + " where status='0'";
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
dt = Model.TransFormDataTable(dt, style);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelTableData(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
string s_ql = string.Format("select * from {0} ", tablename.ToUpper());
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 依据表名获取表中数据
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="tablename"></param>
|
|||
|
|
/// <param name="connectionstring"></param>
|
|||
|
|
/// <param name="style"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public DataTable GetTableData(string tablename, string connectionstring, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
string s_ql = "select * from " + tablename.ToUpper();
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
dt = Model.TransFormDataTable(dt, style);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取数据库中所有的用户表
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectiongstring"></param>
|
|||
|
|
/// <param name="tableschema"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public Dictionary<string, string> GetTableName(string connectiongstring, string tableschema)
|
|||
|
|
{
|
|||
|
|
Dictionary<string, string> data = new Dictionary<string, string>();
|
|||
|
|
//string sql = "select table_name from all_tables where owner='" + tableschema.ToUpper() + "' order by table_name";
|
|||
|
|
//string sql1 = "select VIEW_NAME from ALL_VIEWS where OWNER='" + tableschema.ToUpper() + "' order by view_name";
|
|||
|
|
////try
|
|||
|
|
////{
|
|||
|
|
//using (OracleDataReader odr = ExecuteReader(connectiongstring, CommandType.Text, sql))
|
|||
|
|
//{
|
|||
|
|
// while (odr.Read())
|
|||
|
|
// {
|
|||
|
|
// for (int i = 0; i < odr.FieldCount; i++)
|
|||
|
|
// {
|
|||
|
|
// data.Add(odr[i].ToString(), "T");
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
//using (OracleDataReader odr = ExecuteReader(connectiongstring, CommandType.Text, sql1))
|
|||
|
|
//{
|
|||
|
|
// while (odr.Read())
|
|||
|
|
// {
|
|||
|
|
// for (int i = 0; i < odr.FieldCount; i++)
|
|||
|
|
// {
|
|||
|
|
// data.Add(odr[i].ToString(), "V");
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
return data;
|
|||
|
|
//}
|
|||
|
|
//catch
|
|||
|
|
//{
|
|||
|
|
// return null;
|
|||
|
|
//}
|
|||
|
|
}
|
|||
|
|
public DataTable DataBase(string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
DataTable dt = GetData(connectionstring, sql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelStatusTable(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
string s_ql = string.Format("select * from {0} where Alarmevent=2000 and AlarmStatus=0", tablename.ToUpper());
|
|||
|
|
DataTable dt = GetData(connectionstring, s_ql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelTableData(string tablename, string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
DataTable dt = GetData(connectionstring, sql);
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 其他数据库
|
|||
|
|
/// </summary>
|
|||
|
|
public class OtherAccess : IDBAccess
|
|||
|
|
{
|
|||
|
|
public virtual DataTable GetColumnInfo(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
DataTable dt = new DataTable();
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public virtual DataTable GetTableData(string recordset, string connectionstring, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
DataTable dt = new DataTable();
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public virtual DataTable GetData(string connectionstring, string sql, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
DataTable dt = new DataTable();
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public virtual DataTable GetUpdateTableData(string sql, string connectionstring, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
DataTable dt = new DataTable();
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public virtual bool TableNameIsExist(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
public int GetTableStatus(string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
int flag = -1;
|
|||
|
|
|
|||
|
|
return flag;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取value值
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="connectionstring"></param>
|
|||
|
|
/// <param name="sql"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public string GetTableValue(string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
string value = "";
|
|||
|
|
|
|||
|
|
return value;
|
|||
|
|
}
|
|||
|
|
public DataTable GetTableData(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
DataTable dt = new DataTable();
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public Dictionary<string, string> GetTableName(string connectiongstring, string tableschema)
|
|||
|
|
{
|
|||
|
|
Dictionary<string, string> data = new Dictionary<string, string>();
|
|||
|
|
return data;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
public DataTable DataBase(string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
DataTable dt = new DataTable();
|
|||
|
|
return dt;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
public DataTable SelTableData(string tablename, string connectionstring, ShowStyle style)
|
|||
|
|
{
|
|||
|
|
DataTable dt = new DataTable();
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelTableData(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
DataTable dt = new DataTable();
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelStatusTable(string tablename, string connectionstring)
|
|||
|
|
{
|
|||
|
|
DataTable dt = new DataTable();
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
public DataTable SelTableData(string tablename, string connectionstring, string sql)
|
|||
|
|
{
|
|||
|
|
DataTable dt = new DataTable();
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|