public override void Execute(object parameter)
        {
            DatabaseConfigModel dbConfig = NetworkingViewModel.DatabaseConfigModel;
            bool isSuccess = false;

            try
            {
                DatabaseEnum databaseEnum = DataBaseSoft.TransDatabaseSoft(dbConfig.DatabaseSoft, dbConfig.IsAdvancedSetting);
                isSuccess = DatabaseHelper.TestConnection(databaseEnum, dbConfig.ConnectionString);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "错误", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            if (isSuccess)
            {
                MessageBox.Show("连接测试成功!");
            }
        }
Пример #2
0
        public override void Execute(object parameter)
        {
            PatientMapModel pmm = NetworkingViewModel.PatientMapModel;



            try
            {
                DatabaseConfigModel dataConfig = NetworkingViewModel.DatabaseConfigModel;
                string       sql          = pmm.GetTestPatientInfoSql(dataConfig.DatabaseSoft);
                DatabaseEnum databaseEnum = DataBaseSoft.TransDatabaseSoft(dataConfig.DatabaseSoft,
                                                                           dataConfig.IsAdvancedSetting);
                IDatabaseHelper dbHelper = DatabaseHelper.Open(databaseEnum, dataConfig.ConnectionString);
                DataTable       table    = dbHelper.ExecuteQuery(sql);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

            MessageBox.Show("目标表与字段测试成功!");
        }
Пример #3
0
 protected override void ConfigClient()
 {
     try
     {
         base.ConfigClient();
         if (Config == null)
         {
             ClientHelper.TraceException("DBClient.ConfigClient", "未能成功加载数据库联网方式联网配置文件", "_config为Null");
         }
         _dbConfig = Config.DatabaseConfigModel;
         if (_dbConfig == null)
         {
             ClientHelper.TraceException("DBClient.ConfigClient", "未能成功加载数据库联网方式联网配置文件", "DatabaseConfigModel为Null");
         }
         _connStr = _dbConfig.ConnectionString;
         DatabaseEnum databaseEnum = DataBaseSoft.TransDatabaseSoft(_dbConfig.DatabaseSoft,
                                                                    _dbConfig.IsAdvancedSetting);
         _dbHelper = DatabaseHelper.Open(databaseEnum, _connStr);
     }
     catch (KRException ex)
     {
         throw new Exception("加载联网配置失败");
     }
 }
Пример #4
0
        public override void Execute(object parameter)
        {
            try
            {
                DatabaseConfigModel dbConfig = NetworkingViewModel.DatabaseConfigModel;

                DatabaseEnum databaseEnum = DataBaseSoft.TransDatabaseSoft(dbConfig.DatabaseSoft, dbConfig.IsAdvancedSetting);

                IDatabaseHelper db = DatabaseHelper.Open(databaseEnum, dbConfig.ConnectionString);
                ;

                string sql = null;
                if (dbConfig.DatabaseSoft == DatabaseSoft.SQLServer)
                {
                    sql = "select name from sys.databases";
                }
                else if (dbConfig.DatabaseSoft == DatabaseSoft.MySql)
                {
                    sql = " SHOW DATABASES ";
                }
                else if (dbConfig.DatabaseSoft == DatabaseSoft.PostgreSQL)
                {
                    sql = "SELECT datname FROM pg_database";
                }
                if (sql == null)
                {
                    return;
                }

                DataTable table = db.ExecuteQuery(sql);

                if (table == null)
                {
                    return;
                }

                var list = new ObservableCollection <string>();

                EnumerableRowCollection <string> en = null;
                if (table.Columns.Contains("datname"))
                {
                    en = table.AsEnumerable().Select(r => r["datname"].ToString());
                }
                else if (table.Columns.Contains("name"))
                {
                    en = table.AsEnumerable().Select(r => r["name"].ToString());
                }
                else
                {
                    en = table.AsEnumerable().Select(r => r["Database"].ToString());
                }

                foreach (string str in en)
                {
                    if (string.IsNullOrEmpty(str))
                    {
                        continue;
                    }

                    list.Add(str);
                }

                NetworkingViewModel.DatabaseList = list;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public override void Execute(object parameter)
        {
            DatabaseConfigModel dbConfig = NetworkingViewModel.DatabaseConfigModel;
            DataCallBackModel   dcModel  = NetworkingViewModel.DataCallBackModel;

            DatabaseEnum databaseEnum = DataBaseSoft.TransDatabaseSoft(dbConfig.DatabaseSoft, dbConfig.IsAdvancedSetting);

            IDatabaseHelper db = DatabaseHelper.Open(databaseEnum, dbConfig.ConnectionString);

            ;

            string tableName = string.Empty;

            if (dcModel.CallbackType == "表")
            {
                tableName = dcModel.TargetTableName;
            }
            else if (dcModel.CallbackType == "存储过程")
            {
                tableName = dcModel.TargetProcName;
            }

            if (string.IsNullOrEmpty(tableName))
            {
                return;
            }

            string sql = string.Empty;

            if (dbConfig.DatabaseSoft == DatabaseSoft.SQLServer)
            {
                sql =
                    string.Format(
                        "SELECT A.NAME,B.NAME AS TYPE,A.LENGTH,A.ISNULLABLE FROM SYSCOLUMNS A,SYSTYPES B,SYSOBJECTS D WHERE A.XTYPE=B.XUSERTYPE AND A.ID=D.ID AND A.ID =OBJECT_ID('{0}')",
                        tableName);
            }
            else if (dbConfig.DatabaseSoft == DatabaseSoft.Oracle)
            {
                if (dcModel.CallbackType == "表")
                {
                    sql =
                        string.Format(
                            "SELECT A.COLUMN_NAME AS NAME,A.DATA_TYPE AS TYPE,A.DATA_LENGTH AS LENGTH,A.NULLABLE AS ISNULLABLE FROM USER_TAB_COLS A WHERE UPPER(A.TABLE_NAME) = '{0}'",
                            tableName.ToUpper());
                }
                else
                {
                    sql =
                        string.Format(
                            "SELECT A.ARGUMENT_NAME AS NAME,A.DATA_TYPE AS TYPE,NVL(A.DATA_LENGTH,0) AS LENGTH, 0 AS ISNULLABLE FROM USER_ARGUMENTS A WHERE UPPER(A.OBJECT_NAME)='{0}' ORDER BY SEQUENCE",
                            tableName.ToUpper());
                }
            }
            else if (dbConfig.DatabaseSoft == DatabaseSoft.PostgreSQL)
            {
                sql =
                    string.Format(
                        "select a.column_name as Name, a.udt_name as TYPE,a.character_maximum_length as LENGTH, a.is_nullable as ISNULLABLE from information_schema.columns a where table_schema='public' and table_name='{0}'",
                        tableName);
            }
            else
            {
                if (dcModel.CallbackType == "表")
                {
                    sql =
                        string.Format(
                            "SELECT A.COLUMN_NAME AS NAME, A.DATA_TYPE TYPE,A.COLUMN_TYPE AS LENGTH,A.IS_NULLABLE AS ISNULLABLE FROM INFORMATION_SCHEMA.COLUMNS A WHERE A.TABLE_SCHEMA = '{0}' AND A.TABLE_NAME = '{1}'",
                            dbConfig.Database, tableName);
                }
                else
                {
                    sql =
                        string.Format(
                            "SELECT DB, TYPE, SPECIFIC_NAME, PARAM_LIST, RETURNS FROM MYSQL.PROC A WHERE UPPER(A.SPECIFIC_NAME) = '{0}'",
                            tableName.ToUpper());
                }
            }

            DataTable table = db.ExecuteQuery(sql);

            dcModel.CallbackTabelMap.Clear();

            if (!(dbConfig.DatabaseSoft == DatabaseSoft.MySql && dcModel.CallbackType == "存储过程"))
            {
                var regex = new Regex(@"^\d*$");

                foreach (DataRow row in table.AsEnumerable())
                {
                    string name = row["NAME"].ToString();

                    if (string.IsNullOrEmpty(name))
                    {
                        continue;
                    }

                    int    size   = -1;
                    string length = row["LENGTH"].ToString();

                    Match match = regex.Match(length);

                    if (match.Success && !string.IsNullOrEmpty(match.Value))
                    {
                        size = Convert.ToInt32(match.Value);
                    }

                    var tfmm = new TableFieldMapModel();

                    tfmm.LocalField  = row["NAME"].ToString();
                    tfmm.Type        = row["TYPE"].ToString();
                    tfmm.TargetField = "";
                    tfmm.Size        = size;

                    dcModel.CallbackTabelMap.Add(tfmm);
                }
            }
            else
            {
                DataRow dataRow = table.AsEnumerable().FirstOrDefault();

                if (dataRow != null)
                {
                    var parambytes = dataRow["PARAM_LIST"] as byte[];

                    var ue = new ASCIIEncoding();

                    string paramList = ue.GetString(parambytes);

                    if (!string.IsNullOrEmpty(paramList))
                    {
                        string[] paraml = paramList.Split(new string[1] {
                            ","
                        }, StringSplitOptions.RemoveEmptyEntries);

                        foreach (string param in paraml)
                        {
                            string value = param.Trim();
                            if (value.StartsWith("OUT"))
                            {
                                continue;
                            }

                            string[] values = value.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                            string   name   = string.Empty;
                            string   type   = string.Empty;

                            if (value.StartsWith("IN"))
                            {
                                name = values[1];
                                type = values[2];
                            }
                            else
                            {
                                name = values[0];
                                type = values[1];
                            }

                            var tfmm = new TableFieldMapModel();

                            tfmm.LocalField  = name;
                            tfmm.Type        = type;
                            tfmm.TargetField = "";
                            tfmm.Size        = 0;

                            dcModel.CallbackTabelMap.Add(tfmm);
                        }
                    }
                }
            }

            //NetworkingViewModel.TargetFieldList = list;
        }
Пример #6
0
        public override void Execute(object parameter)
        {
            DatabaseConfigModel dbConfig     = NetworkingViewModel.DatabaseConfigModel;
            DatabaseEnum        databaseEnum = DataBaseSoft.TransDatabaseSoft(dbConfig.DatabaseSoft, dbConfig.IsAdvancedSetting);
            IDatabaseHelper     db           = DatabaseHelper.Open(databaseEnum, dbConfig.ConnectionString);

            if (string.IsNullOrEmpty(dbConfig.User) || string.IsNullOrEmpty(dbConfig.Password))
            {
                return;
            }
            string sql = null;

            string tableName = NetworkingViewModel.PatientMapModel.PatientTableName;

            if (string.IsNullOrEmpty(tableName))
            {
                return;
            }
            if (dbConfig.DatabaseSoft == DatabaseSoft.SQLServer)
            {
                sql =
                    string.Format(
                        "select a.name as ColumnName,b.name as type,a.length,a.isnullable from syscolumns a,systypes b,sysobjects d where a.xtype=b.xusertype and a.id=d.id and a.id =object_id('{0}')",
                        tableName);
            }
            else if (dbConfig.DatabaseSoft == DatabaseSoft.Oracle)
            {
                sql =
                    string.Format(
                        "SELECT A.TABLE_NAME   as TableName,A.COLUMN_NAME  as ColumnName,A.DATA_TYPE    as type,A.DATA_LENGTH  as length  FROM USER_TAB_COLS A  where A.TABLE_NAME  = '{0}'",
                        tableName.ToUpper());
            }
            else if (dbConfig.DatabaseSoft == DatabaseSoft.PostgreSQL)
            {
                sql =
                    string.Format(
                        "select a.column_name as ColumnName, a.udt_name as type,a.character_maximum_length as length, a.is_nullable as isnullable from information_schema.columns a where table_name='{0}'",
                        tableName);
            }
            else
            {
                sql =
                    string.Format(
                        "Select A.COLUMN_NAME as ColumnName, A.DATA_TYPE TYPE,A.COLUMN_TYPE as LENGTH,A.IS_NULLABLE as ISNULLABLE FROM INFORMATION_SCHEMA.COLUMNS A Where A.table_schema = '{0}' AND A.table_name = '{1}'",
                        dbConfig.Database, tableName);
            }

            DataTable table = db.ExecuteQuery(sql);

            var list = new ObservableCollection <string>();

            foreach (DataRow row in table.AsEnumerable())
            {
                string name = row["ColumnName"].ToString();

                if (string.IsNullOrEmpty(name))
                {
                    continue;
                }

                list.Add(string.Format("[{0}]", name));
            }

            NetworkingViewModel.TargetFieldList = list;
        }
        public bool SaveCallBackData(RenderTargetBitmap pBitmap = null)
        {
            var config   = KRNetworkingConfig.Config;
            var dbConfig = config.DatabaseConfigModel;

            if (config.DataCallBackModel.CallbackType == "无")
            {
                return(true);
            }

            var sqlandParam = config.DataCallBackModel.GetSqlStringByParam(dbConfig.DatabaseSoft);

            foreach (var p in sqlandParam.Parameters)
            {
                try
                {
                    object value    = null;
                    var    upperKey = p.Key.ToUpper();
                    switch (upperKey)
                    {
                    case "<IMAGE>":
                        if (pBitmap != null)
                        {
                            var encoder = GetPic(pBitmap);
                            using (var memoryStream = new MemoryStream())
                            {
                                encoder.Save(memoryStream);
                                var bytes = memoryStream.ToArray();
                                value            = bytes;
                                p.Parameter.Size = bytes.Length;
                            }
                        }
                        break;

                    case "<IMAGEPATH>":
                        if (!string.IsNullOrEmpty(_fullPath))
                        {
                            if (config.ReportSaveModel.ReportSaveType == "FTP")
                            {
                                var ftpadress = config.ReportSaveModel.FtpAdresse;
                                var adress    = _fullPath.Replace("\\", "/");
                                var len       = ftpadress.Length;
                                value            = adress.Substring(len);
                                p.Parameter.Size = _fullPath.Length - len;
                            }
                            else
                            {
                                value            = _fullPath.Replace("\\", "/");
                                p.Parameter.Size = _fullPath.Length;
                            }
                        }
                        break;

                    default:
                        //if (_row.Table.Columns.Contains(p.Key))
                        //{
                        //var rowValue = _row[p.Key];
                        //if (p.Key.ToUpper() == "CHECKTYPE")
                        //{
                        //    CheckType cy = CheckType.ABIPWV;
                        //    var isSucc = Enum.TryParse<CheckType>(rowValue.ToString(), true, out cy);
                        //    if (isSucc)
                        //    {
                        //        rowValue = KRNetworkingConfig.Config.PatientMapModel.GetTargetCheckByCheckType(cy);
                        //    }
                        //}
                        //else
                        //{
                        var rowValue = GetSquareValue(p.Key);
                        //}
                        value = rowValue;
                        if (p.Key.ToUpper() == "[GENDER]")
                        {
                            if (rowValue == "0" || rowValue == "男")
                            {
                                value = "男";
                            }
                            else
                            {
                                value = "女";
                            }
                        }

                        //}
                        //else
                        //{

                        //}
                        break;
                    }

                    if (string.IsNullOrEmpty(value?.ToString()))
                    {
                        value = DBNull.Value;
                    }

                    if (dbConfig.DatabaseSoft == DatabaseSoft.PostgreSQL)
                    {
                        var para = p.Parameter as NpgsqlParameter;
                        if (para == null)
                        {
                            continue;
                        }
                        if (para.NpgsqlDbType == NpgsqlDbType.Date || para.NpgsqlDbType == NpgsqlDbType.Timestamp)
                        {
                            p.Parameter.Value = Convert.ToDateTime(value.ToString());
                        }
                        else
                        {
                            p.Parameter.Value = value;
                        }
                    }
                    else
                    {
                        p.Parameter.Value = value;
                    }
                }
                catch (Exception ex)
                {
                    ClientHelper.TraceException("KRNetworkingHelper.SaveCallBackData", "数据映射失败", ex.Message);
                }
            }

            var dbHelper =
                DatabaseHelper.Open(DataBaseSoft.TransDatabaseSoft(dbConfig.DatabaseSoft, dbConfig.IsAdvancedSetting),
                                    config.DatabaseConfigModel.ConnectionString);

            var parameters = new DbParameter[sqlandParam.Parameters.Count];

            for (var i = 0; i < parameters.Length; i++)
            {
                parameters[i] = sqlandParam.Parameters[i].Parameter;
            }

            var result = -1;

            try
            {
                if (config.DataCallBackModel.CallbackType == "表" &&
                    config.DataCallBackModel.TargetTableUpdateType == "更新")
                {
                    result = dbHelper.ExecuteNonQuery(sqlandParam.UpdateSql, parameters);
                }

                if (result <= 0)
                {
                    result = dbHelper.ExecuteNonQuery(sqlandParam.InsertSql, parameters);
                }

                if (config.DataCallBackModel.CallbackType == "存储过程")
                {
                    result++;
                }
            }
            catch (Exception ex)
            {
                ClientHelper.TraceException("KRNetworkingHelper.SaveCallBackData", "数据回写失败", ex.Message);
            }

            return(result > 0);
        }