예제 #1
0
        public static DBMSContext CreateDBMSContext(DBMSPlatformEnum platform)
        {
            switch (platform)
            {
            case DBMSPlatformEnum.Access:
                return(new Zen.DBMS.Access.AccessContext());

            case DBMSPlatformEnum.DB2:
                return(new Zen.DBMS.DB2.DB2Context());

            case DBMSPlatformEnum.MySql:
                return(new Zen.DBMS.MySql.MySqlContext());

            case DBMSPlatformEnum.SqlServer:
                return(new Zen.DBMS.SqlServer.SqlSvrContext());

            case DBMSPlatformEnum.SqlCe:
                return(new Zen.DBMS.SqlCe.SqlCeContext());

            case DBMSPlatformEnum.Sqlite:
                return(new Zen.DBMS.Sqlite.SqliteContext());

            case DBMSPlatformEnum.Oracle:
                return(new Zen.DBMS.Oracle.OracleContext());

            case DBMSPlatformEnum.OleDB:
                return(new OleDBContext());

            case DBMSPlatformEnum.ODBC:
                return(new ODBCContext());

            default:
                return(null);
            }
        }
예제 #2
0
        private void ConnectEmbedded(DBMSPlatformEnum dbmsEnum)
        {
            IDataSource svr = TryConnectDatasource(dbmsEnum);

            if (svr == null)
            {
                return;
            }

            IDBObjectTree tree = null;

            switch (dbmsEnum)
            {
            case DBMSPlatformEnum.Access:
                tree = new AccessObjectTree(svr.GetTableLister()); break;

            case DBMSPlatformEnum.SqlCe:
                tree = new SqlCeObjectTree(svr.GetTableLister()); break;

            case DBMSPlatformEnum.Sqlite:
                tree = new SqliteObjectTree(svr.GetTableLister()); break;
            }
            tree.DataSource = svr;
            tree.Root.Id    = Path.GetFileNameWithoutExtension(svr.DataSource);
            _dbExplorer.AttachSubTree(dbmsEnum, tree);
        }
예제 #3
0
        /// <summary>
        /// /platform -> serverName -> connection string
        /// </summary>
        public Dictionary <string, string> GetServerConnectionList(DBMSPlatformEnum dbms)
        {
            if (_svrConnectionList == null)
            {
                _svrConnectionList = new Dictionary <DBMSPlatformEnum, Dictionary <string, string> >();
            }

            return(Macros.SafeGetNew(_svrConnectionList, dbms));
        }
예제 #4
0
        public SchemaBuilder(DBMSPlatformEnum dbmsPlatform, IDataTypeDictionary dtMap)
        {
            _dbmsPlatform = dbmsPlatform;
            _dtMap        = dtMap;
            _LowVersion   = Version.MINVERSION; // no version filter by default
            _HighVersion  = Version.MAXVERSION;

            _context = new SchemaContext();
        }
예제 #5
0
 public static void AppendBatch(ref StringBuilder strTarget, string strSrc, DBMSPlatformEnum dbmsPlatform)
 {
     strTarget.Append(strSrc);
     if (dbmsPlatform == DBMSPlatformEnum.SqlServer)
     {
         strTarget.Append(KWD.SQLSVR_BD);
     }
     else
     {
         strTarget.Append(KWD.ORACLE_BD);
     }
 }
예제 #6
0
        public void AttachSubTree(DBMSPlatformEnum dbmsEnum, IDataTableTree dataSourceTree)
        {
            DataNode <string, Cell> dataRoot = dataSourceTree.Root;

            if (dataRoot.Children.Count < 1)
            {
                return;
            }

            TreeNode dbmsRoot    = AddDBMSRoot(dbmsEnum);
            TreeNode subTreeRoot = dbmsRoot.Nodes.Add(dataRoot.Id);

            AddChildNodes(subTreeRoot, dataRoot.Children.Values, dataSourceTree);
        }
예제 #7
0
        public void AttachSubTree(DBMSPlatformEnum dbmsEnum, DataNode <string, Cell> root, IEnumerable <IDataTableTree> subTrees)
        {
            TreeNode dbmsRoot       = AddDBMSRoot(dbmsEnum);
            TreeNode dataSourceRoot = dbmsRoot.Nodes.Add(root.Id);

            foreach (IDataTableTree objTree in subTrees)
            {
                DataNode <string, Cell> dataRoot = objTree.Root;
                if (dataRoot.Children.Count > 0)
                {
                    TreeNode subTreeRoot = dataSourceRoot.Nodes.Add(dataRoot.Id);
                    AddChildNodes(subTreeRoot, dataRoot.Children.Values, objTree);
                }
            }
        }
예제 #8
0
        public List <string> GetDataSources(DBMSPlatformEnum dbms)
        {
            if (_svrLists == null)
            {
                _svrLists = new Dictionary <DBMSPlatformEnum, List <string> >();
            }

            List <string> svrList = null;

            if (!_svrLists.TryGetValue(dbms, out svrList))
            {
                svrList = _contexts[dbms].GetDataSources();
                _svrLists.Add(dbms, svrList);
            }
            return(svrList);
        }
예제 #9
0
        private TreeNode AddDBMSRoot(DBMSPlatformEnum dbmsEnum)
        {
            TreeNode dbmsRoot = null;

            string dbmsName = dbmsEnum.ToString();

            if (_rootNode.Nodes.ContainsKey(dbmsName))
            {
                dbmsRoot = _rootNode.Nodes[dbmsName];
            }
            else
            {
                dbmsRoot                    = _rootNode.Nodes.Add(dbmsName, dbmsName);
                dbmsRoot.ImageIndex         = 4;
                dbmsRoot.SelectedImageIndex = dbmsRoot.ImageIndex;
            }

            return(dbmsRoot);
        }
예제 #10
0
        /// <summary>
        /// Show connection dialog and return a valid datasource if succeeded.
        /// </summary>
        private IDataSource TryConnectDatasource(DBMSPlatformEnum dbmsEnum)
        {
            DBMSContext context = _instance.GetDBMSContext(dbmsEnum);
            DBLoginInfo login   = context.CreateDBLoginInfo();

            PropertyDlg       dlg         = new PropertyDlg("Connect to " + dbmsEnum.ToString());
            ObjValueLabelHint hint        = null;
            List <string>     dataSources = _instance.GetDataSources(dbmsEnum);

            if (dataSources != null && dataSources.Count > 0)
            {
                hint            = new ObjValueLabelHint();
                hint.ValueHints = new Dictionary <string, IEnumerable <string> >();
                hint.ValueHints.Add("DataSource", dataSources);
            }
            dlg.AddOption(login, hint);
            if (dlg.ShowDialog() != DialogResult.OK)
            {
                return(null);
            }

            IDataSource svr = context.CreateDatasource(login.ConnectionString);

            if (!svr.TestConnection())
            {
                MessageBoxEx.ShowError(svr.LastErrorMessage, "Connection Failed");
                return(null);
            }

            // Remember the connection
            Dictionary <string, string> connectionList = _instance.GetServerConnectionList(dbmsEnum);

            Macros.SafeAdd(connectionList, login.DataSource, login.ConnectionString);

            return(svr);
        }
예제 #11
0
 private string ToDatasourceListFile(DBMSPlatformEnum dbEnum)
 {
     return(DatasourceListFile + "." + dbEnum.ToString());
 }
예제 #12
0
 private string ToSvrConnectionListFile(DBMSPlatformEnum dbEnum)
 {
     return(SvrConnListFile + "." + dbEnum.ToString());
 }
예제 #13
0
 public DBMSContext GetDBMSContext(DBMSPlatformEnum dbms)
 {
     return(_contexts[dbms]);
 }
예제 #14
0
 protected void AppendBatch(ref StringBuilder strTarget, string strSrc, DBMSPlatformEnum dbmsPlatform)
 {
     Anonymous.AppendBatch(ref strTarget, strSrc, dbmsPlatform);
 }