/// <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; } }
/// <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); }
/// <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); }