using CnasSynchronousCommon; using CnasSynchronusDAL; using CnasSynchrousModel; using Oracle.ManagedDataAccess.Client; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CNAS_DBSync { public class SelectTableType { private static string connectionStr = ""; public static DataTable MySqlsec(string strTableName) { MySQLDAL mysql = new MySQLDAL(); DataTable tb = mysql.GetTableTypeAndLenth(strTableName); return tb; } public static DataTable Sqlserversec(string strTableName, SyncInstrumentItemInfo t) { DataTable dt = new DataTable(); try { if (t.SyncInstrumentDSInfo.Host != "") connectionStr = $"Data Source = {t.SyncInstrumentDSInfo.Host}; Initial Catalog = {t.SyncInstrumentDSInfo.ServerName}; User Id = {t.SyncInstrumentDSInfo.UserId}; Password = {t.SyncInstrumentDSInfo.UserPwd};"; string sql = string.Format(@"SELECT c.name AS ColumnName, t.name AS DataType, c.max_length AS MaxLength, c.is_nullable AS IsNullable, c.default_object_id AS DefaultObjectId, ep.value AS remark FROM sys.columns c JOIN sys.types t ON c.user_type_id = t.user_type_id LEFT JOIN sys.extended_properties ep ON c.object_id = ep.major_id AND c.column_id = ep.minor_id AND ep.name = 'MS_Description' -- 备注的属性名称 WHERE c.object_id = OBJECT_ID('{0}'); ", strTableName); //查询字符串 dt = GetDataTable(sql, new SqlParameter[] { }); } catch (Exception ex) { //发生异常,写入日志 AppLog.Error(ex.Message); } return dt; } /// /// 查询操作 /// /// /// public static DataTable GetDataTable(string sql, params SqlParameter[] sp) { using (SqlConnection conn = new SqlConnection(connectionStr)) { conn.Open(); using (SqlDataAdapter sda = new SqlDataAdapter(sql, conn)) { sda.SelectCommand.Parameters.AddRange(sp); DataTable dt = new DataTable(); sda.Fill(dt); return dt; } } } public static DataTable PostgreSql(string strTableName) { DataTable dt = new DataTable(); string strSql = string.Format(@"SELECT a.attname as ColumnName, format_type(a.atttypid, a.atttypmod) as DataType, a.attnotnull as 非空, col_description(a.attrelid, a.attnum) as remark FROM pg_class as c, pg_attribute as a where a.attrelid = c.oid and a.attnum > 0 and c.relname = '{0}'; ", strTableName); try { dt = PostgreSQLHelper.ExecuteDataSet(strSql).Tables[0]; } catch (Exception ex) { AppLog.Error(ex.Message); } return dt; } public static DataTable DmSql(string strTableName) { DataTable dt = new DataTable(); string strSql = string.Format(@"SELECT c.COLUMN_NAME AS ColumnName, c.DATA_TYPE AS DataType, c.DATA_LENGTH AS 字段长度, c.NULLABLE AS 是否允许为空, com.COMMENTS AS remark FROM USER_TAB_COLUMNS c LEFT JOIN USER_COL_COMMENTS com ON c.TABLE_NAME = com.TABLE_NAME AND c.COLUMN_NAME = com.COLUMN_NAME WHERE c.TABLE_NAME = '{0}';", strTableName); try { dt = DamengHelper.ExecuteDataSet(strSql).Tables[0]; } catch (Exception ex) { AppLog.Error(ex.Message); } return dt; } public static DataTable OrcSql(string strTableName, SyncInstrumentItemInfo t) { connectionStr = $"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={t.SyncInstrumentDSInfo.Host})(PORT={t.SyncInstrumentDSInfo.Port}))" + $"(CONNECT_DATA=(SID={t.SyncInstrumentDSInfo.ServerName})));User Id={t.SyncInstrumentDSInfo.UserId};Password={t.SyncInstrumentDSInfo.UserPwd};"; DataTable dt = new DataTable(); string strSql = string.Format("select COLUMN_NAME AS ColumnName,NULLABLE AS IsNullable,DATA_TYPE AS DataType,DATA_LENGTH AS CharMaxLenth,DATA_LENGTH AS CharOcterLenth,DATA_PRECISION AS NumericPrecision,DATA_SCALE AS NumericScale from user_tab_columns where table_name='{0}'", strTableName.ToUpper()); try { dt = GetDataTable(strSql, new OracleParameter[] { }); } catch (Exception ex) { AppLog.Error(ex.Message); } return dt; } /// /// 查询操作 /// /// /// public static DataTable GetDataTable(string sql, params OracleParameter[] sp) { DataTable dt = new DataTable(); try { using (OracleConnection conn = new OracleConnection(connectionStr)) { conn.Open(); //using (OracleDataAdapter sda = new OracleDataAdapter("select * from t_weight_info where WEIGH_DATE > '2019-10-02 14:20:12'", conn)) using (OracleDataAdapter sda = new OracleDataAdapter(sql, conn)) { sda.SelectCommand.Parameters.AddRange(sp); sda.Fill(dt); } } } catch (Exception ex) { AppLog.Error(ex.Message); } return dt; } } }