Beispiel #1
0
        /// <summary>
        /// Конструктор класса
        /// </summary>
        /// <param name="key">Путь к ключу в реестре</param>
        /// <remarks>Считывает из реестра строку соединения с базой и версию SQL-сервера</remarks>
        public CDbCreator(string key)
        {
            //пытаемся прочитать строку соединения с базой и версию MS SQL Server из реестра
            try
            {
                RegistryKey rk = Registry.LocalMachine.OpenSubKey(key);
                if (rk != null)
                {
                    conStr = rk.GetValue("connection").ToString();
                    switch (Convert.ToInt32(rk.GetValue("sqlver").ToString()))
                    {
                    case (int)SqlVer.MSSQL2000: sqlVer = SqlVer.MSSQL2000;
                        break;

                    case (int)SqlVer.MSSQL2005: sqlVer = SqlVer.MSSQL2005;
                        break;

                    default: sqlVer = SqlVer.UNKNOWN;
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("Ошибка при чтение из реестра настроек соединения с базой данных! " + e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                conStr = "";
                sqlVer = SqlVer.UNKNOWN;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Проверяет, есть ли указанная база данных
        /// </summary>
        /// <param name="conStr">Строка соединения с базой master (либо какой-либо другой базой) соответствующего SQL-сервера</param>
        /// <param name="sqlVer">Версия SQL-сервера</param>
        /// <param name="dbname">Имя базы данных</param>
        /// <returns>0 - базы нет; 1 - база есть; -1 - произошла ошибка при проверке </returns>
        public int isDBase(string conStr, SqlVer sqlVer, string dbname)
        {
            try
            {
                if (conStr == "")
                {
                    return(-1);
                }
                SqlConnection sqlCon = new SqlConnection(conStr);
                sqlCon.Open();

                string sql = "";
                if (sqlVer == SqlVer.MSSQL2000)
                {
                    sql = "SELECT count(*) FROM master.dbo.sysdatabases WHERE name = 'InCome'";
                }
                if (sqlVer == SqlVer.MSSQL2005)
                {
                    sql = "SELECT count(*) FROM master.sys.databases WHERE name = 'InCome'";
                }
                if (sql == "")
                {
                    return(-1);
                }

                SqlCommand sqlCom = new SqlCommand(sql, sqlCon);
                sqlCom.CommandTimeout = 60;

                int cnt = Convert.ToInt32(sqlCom.ExecuteScalar());
                sqlCon.Close();
                if (cnt > 0)
                {
                    return(1);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                return(-1);
            }

            return(0);
        }
Beispiel #3
0
        /// <summary>
        /// Задаёт строку соединения с базой и определяет версию SQL-сервера
        /// </summary>
        /// <returns>true - выполнена успешно; false - произошла ошибка</returns>
        /// <remarks>На машине пользователя должны быть установлены "Microsoft ActiveX Data... 2.7" и "Microsoft OLEDB 1.0 Service..." </remarks>
        public bool setConStr()
        {
            sqlVer = SqlVer.UNKNOWN;
            conStr = "";
            try
            {
                //нужно подключить Microsoft ActiveX Data... 2.7 и Microsoft OLEDB 1.0 Service..."
                MSDASC.DataLinks  conDlg = new MSDASC.DataLinks();
                ADODB._Connection adoCon = (ADODB._Connection)conDlg.PromptNew();
                if (adoCon == null)
                {
                    return(false);
                }
                conStr = adoCon.ConnectionString;
                //выясняем какая версия MS SQL Server используется
                if (conStr.IndexOf("SQLOLEDB") >= 0)
                {
                    sqlVer = SqlVer.MSSQL2000;
                }
                if (conStr.IndexOf("SQLNCLI") >= 0)
                {
                    sqlVer = SqlVer.MSSQL2005;
                }
                if (sqlVer == SqlVer.UNKNOWN)
                {
                    return(false);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                return(false);
            }

            return(true);
        }