public void CompleteDatabaseInfoTest() { var dbInfo = new FbDatabaseInfo(Connection); foreach (var m in dbInfo.GetType() .GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly) .Where(x => !x.IsSpecialName) .Where(x => x.Name.EndsWith("Async"))) { if (ServerVersion < new Version(4, 0, 0, 0) && new[] { nameof(FbDatabaseInfo.GetWireCryptAsync), nameof(FbDatabaseInfo.GetCryptPluginAsync), nameof(FbDatabaseInfo.GetNextAttachmentAsync), nameof(FbDatabaseInfo.GetNextStatementAsync), nameof(FbDatabaseInfo.GetReplicaModeAsync), nameof(FbDatabaseInfo.GetDbFileIdAsync), nameof(FbDatabaseInfo.GetDbGuidAsync), nameof(FbDatabaseInfo.GetCreationTimestampAsync), nameof(FbDatabaseInfo.GetProtocolVersionAsync), }.Contains(m.Name)) { continue; } Assert.DoesNotThrowAsync(() => (Task)m.Invoke(dbInfo, new object[] { CancellationToken.None }), m.Name); } }
public void DatabaseInfoTest() { var dbInfo = new FbDatabaseInfo(Connection); foreach (var p in dbInfo.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly).Where(x => !x.IsSpecialName)) { Assert.DoesNotThrow(() => p.GetValue(dbInfo), p.Name); } }
public void DatabaseInfoTest() { var dbInfo = new FbDatabaseInfo(Connection); foreach (var m in dbInfo.GetType() .GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly) .Where(x => !x.IsSpecialName) .Where(x => x.Name.EndsWith("Async"))) { Assert.DoesNotThrowAsync(() => (Task)m.Invoke(dbInfo, new object[] { CancellationToken.None }), m.Name); } }
private void Connect() { var fb_con = new FbConnectionStringBuilder(); fb_con.Charset = "WIN1251"; fb_con.UserID = "sysdba"; fb_con.Password = "******"; fb_con.Database = txtPath; fb_con.ServerType = 0; //fb_con.ClientLibrary = @"C:\Program Files\FirebirdClient.dll"; _fb = new FbConnection(fb_con.ToString()); _fb.Open(); var fbInf = new FbDatabaseInfo(_fb); }
public static bool InitDBConnection(string sServer, string sCharset, string sUserLogin, string sPassword, string sDB, out FbConnection firebirdConnection) { bool ret = false; firebirdConnection = null; var strConnection = @"Server=" + sServer + "; User="******"; Password="******"; Database=" + sDB + "; Character Set=" + sCharset; //var firebirdConnectionStringBuilder = new FbConnectionStringBuilder(@"Server=localhost; User=SYSDBA; Password=masterkey; Database=C:\SSG\PROJECTs\TELET\DB4TELEFONE\sampd_cexs.fdb; Character Set=Win1251"); var firebirdConnectionStringBuilder = new FbConnectionStringBuilder(strConnection); try { firebirdConnection = new FbConnection(firebirdConnectionStringBuilder.ToString()); firebirdConnection.Open(); var firebirdInfo = new FbDatabaseInfo(firebirdConnection); //информация о БД Console.WriteLine("Database Info is {0}", firebirdInfo.ToString()); ret = true; //////////////////////////////////////////////////////// // devel2.frunze.local:sampd_cexs //fb.ConnectionString = sServer + ":" + sDB; //fb.Charset = sCharset; //fb.UserID = sUserLogin; //fb.Password = sPassword; //var fbconn = new FbConnection(fb.ToString()); //Type typ = fbconn.GetType(); //Console.WriteLine(typ.ToString()); //////////////////////////////////////////////////////// return(ret); } catch (FbException Ex) { Console.WriteLine("Error occured during connection establishing ..."); throw; } }
public void ExecuteNonQuery(String query) { error = 0; if (fb.State == ConnectionState.Closed) { fb.Open(); } FbDatabaseInfo fb_inf = new FbDatabaseInfo(fb); //информация о БД //пока у объекта БД не был вызван метод Open() - никакой информации о БД не получить, будет только ошибка // MessageBox.Show("Info: " + fb_inf.ServerClass + "; " + fb_inf.ServerVersion); //выводим тип и версию используемого сервера Firebird FbCommand InsertSQL = new FbCommand(query, fb); //"INSERT INTO COINS (NAME,NUMBER,CAT,IMAGE_JPG,IMAGE_CDR) VALUES('" + textBox1.Text + "')", fb); if (fb.State == ConnectionState.Closed) //если соединение закрыто - откроем его; Перечисление ConnectionState содержит состояния соединения (подключено/отключено) { fb.Open(); } FbTransaction fbt = fb.BeginTransaction(); //стартуем транзакцию; стартовать транзакцию можно только для открытой базы (т.е. мутод Open() уже был вызван ранее, иначе ошибка) InsertSQL.Transaction = fbt; //необходимо проинициализить транзакцию для объекта InsertSQL try { int res = InsertSQL.ExecuteNonQuery(); //для запросов, не возвращающих набор данных (insert, update, delete) надо вызывать этот метод //MessageBox.Show("SUCCESS: " + res.ToString()); fbt.Commit(); //если вставка прошла успешно - комитим транзакцию } catch (Exception ex) { MessageBox.Show(ex.Message); error = 1; } InsertSQL.Dispose(); //в документации написано, что ОЧЕНЬ рекомендуется убивать объекты этого типа, если они больше не нужны fb.Close(); }
//*****************// //ПОДКЛЮЧЕНИЕ К БД// //*****************// public void Button7_Click(object sender, EventArgs e) { try { FbConnectionStringBuilder fb_con = new FbConnectionStringBuilder(); fb_con.Charset = "WIN1251"; fb_con.UserID = "" + textBox12.Text + ""; //SYSDBA fb_con.Password = "" + textBox13.Text + ""; //masterkey fb_con.Database = "" + textBox14.Text + ""; //C:\\Users\\developer\\Desktop\\PROEKT\\BASE.FDB fb_con.ServerType = 0; fb = new FbConnection(fb_con.ToString()); fb.Open(); FbDatabaseInfo fb_inf = new FbDatabaseInfo(fb); MessageBox.Show("Подключение успешно выполненно.\n" + "Информация: " + fb_inf.ServerClass + "; " + fb_inf.ServerVersion, "Успешно."); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!"); } //ДАННЫЕ ТАБЛИЦЫ DATA_FRIENDS// DataTable dt2 = new DataTable(); FbDataAdapter da2 = new FbDataAdapter(); FbCommand cmd2 = new FbCommand("SELECT base_friends.id, base_friends.name, base_friends.surname, data_friends.birthday,data_friends.mesto_rabotu, data_friends.web_sayt,data_friends.instagram FROM base_friends inner join data_friends on(base_friends.id = data_friends.id); ", fb); try { cmd2.CommandType = CommandType.Text; FbDataReader dr = cmd2.ExecuteReader(); dt2.Load(dr); } catch (Exception ex) { MessageBox.Show(ex.Message); } dataGridView3.DataSource = dt2; dataGridView4.DataSource = dt2; }
public void connectDB() { FbConnectionStringBuilder fb_con = new FbConnectionStringBuilder(); fb_con.Charset = "UNICODE_FSS"; //используемая кодировка fb_con.UserID = "SYSDBA"; //логин fb_con.Password = "******"; //пароль ///CBASE.FDB GBASE.FDB fb_con.Database = "C:\\Program Files (x86)\\ENT\\Server\\DB\\CBASE.FDB "; //путь к файлу базы данных fb_con.ServerType = 0; //указываем тип сервера (0 - "полноценный Firebird" (classic или super server), 1 - встроенный (embedded)) //создаем подключение fb = new FbConnection(fb_con.ToString()); //передаем нашу строку подключения объекту класса FbConnection fb.Open(); //открываем БД FbDatabaseInfo fb_inf = new FbDatabaseInfo(fb); this.Text = ("Info: " + fb_inf.ServerClass + "; " + fb_inf.ServerVersion); //выводим тип и версию используемого сервера Firebird //информация о БД }
public void DatabaseInfoTest() { FbDatabaseInfo dbInfo = new FbDatabaseInfo(Connection); TestContext.WriteLine("Server Version: {0}", dbInfo.ServerVersion); TestContext.WriteLine("ISC Version : {0}", dbInfo.IscVersion); TestContext.WriteLine("Server Class : {0}", dbInfo.ServerClass); TestContext.WriteLine("Max memory : {0}", dbInfo.MaxMemory); TestContext.WriteLine("Current memory : {0}", dbInfo.CurrentMemory); TestContext.WriteLine("Page size : {0}", dbInfo.PageSize); TestContext.WriteLine("ODS Mayor version : {0}", dbInfo.OdsVersion); TestContext.WriteLine("ODS Minor version : {0}", dbInfo.OdsMinorVersion); TestContext.WriteLine("Allocation pages: {0}", dbInfo.AllocationPages); TestContext.WriteLine("Base level: {0}", dbInfo.BaseLevel); TestContext.WriteLine("Database id: {0}", dbInfo.DbId); TestContext.WriteLine("Database implementation: {0}", dbInfo.Implementation); TestContext.WriteLine("No reserve: {0}", dbInfo.NoReserve); TestContext.WriteLine("Forced writes: {0}", dbInfo.ForcedWrites); TestContext.WriteLine("Sweep interval: {0}", dbInfo.SweepInterval); TestContext.WriteLine("Number of page fetches: {0}", dbInfo.Fetches); TestContext.WriteLine("Number of page marks: {0}", dbInfo.Marks); TestContext.WriteLine("Number of page reads: {0}", dbInfo.Reads); TestContext.WriteLine("Number of page writes: {0}", dbInfo.Writes); TestContext.WriteLine("Removals of a version of a record: {0}", dbInfo.BackoutCount); TestContext.WriteLine("Number of database deletes: {0}", dbInfo.DeleteCount); TestContext.WriteLine("Number of removals of a record and all of its ancestors: {0}", dbInfo.ExpungeCount); TestContext.WriteLine("Number of inserts: {0}", dbInfo.InsertCount); TestContext.WriteLine("Number of removals of old versions of fully mature records: {0}", dbInfo.PurgeCount); TestContext.WriteLine("Number of reads done via an index: {0}", dbInfo.ReadIdxCount); TestContext.WriteLine("Number of sequential sequential table scans: {0}", dbInfo.ReadSeqCount); TestContext.WriteLine("Number of database updates: {0}", dbInfo.UpdateCount); TestContext.WriteLine("Database size in pages: {0}", dbInfo.DatabaseSizeInPages); TestContext.WriteLine("Number of the oldest transaction: {0}", dbInfo.OldestTransaction); TestContext.WriteLine("Number of the oldest active transaction: {0}", dbInfo.OldestActiveTransaction); TestContext.WriteLine("Number of the oldest active snapshot: {0}", dbInfo.OldestActiveSnapshot); TestContext.WriteLine("Number of the next transaction: {0}", dbInfo.NextTransaction); TestContext.WriteLine("Number of active transactions: {0}", dbInfo.ActiveTransactions); }
private void Init() { HasError = false; try { try { fbConnection.Open(); //открываем БД fbDBInfo = new FbDatabaseInfo(fbConnection); // Get the list of User Tables // Restrictions: // TABLE_CATALOG // TABLE_SCHEMA // TABLE_NAME // TABLE_TYPE System.Data.DataTable userTables = fbConnection.GetSchema("Tables", new string[] { null, null, null, "TABLE" }); // Get the list of System Tables // Restrictions: // TABLE_CATALOG // TABLE_SCHEMA // TABLE_NAME // TABLE_TYPE System.Data.DataTable systemTables = fbConnection.GetSchema("Tables", new string[] { null, null, null, "SYSTEM TABLE" }); } finally { fbConnection.Close(); } } catch (DllNotFoundException ex) { StringBuilder sb = new StringBuilder(); sb.Append("Не удалось создать подключение к базе данных.\n"); sb.Append("В папке с программой не найдены необходимые библиотеки\n"); sb.Append("fbembed.dll, ib_util.dll, icudt30.dll, icuin30.dll, icuuc30.dll\n"); sb.Append("Переустановите программу или обратитесь к разработчику."); HasError = true; LastException = ex; throw new InvalidOperationException(sb.ToString()); } catch (FbException ex) { StringBuilder sb = new StringBuilder(); sb.Append("Не удалось создать подключение к базе данных.\n"); switch (ex.ErrorCode) { case 335544344: sb.Append("Файл базы данных используется другой программой.\n"); break; case 335544346: sb.Append("База данных повреждена.\n"); break; case 335544415: sb.Append("База данных повреждена.\n"); break; case 335544472: sb.Append("У Вас нет доступа к базе данных, проверьте параметры подключения.\n"); break; case 335544352: sb.Append("У Вас отсутствуют разрешения, проверьте параметры подключения.\n"); break; default: sb.Append("\tкод ошибки: "); sb.Append(ex.ErrorCode.ToString()); sb.Append("\n\tописание: "); sb.Append(ex.Message); break; } HasError = true; LastException = ex; throw new InvalidOperationException(sb.ToString()); } catch (Exception ex) { StringBuilder sb = new StringBuilder(); sb.Append("Не удалось создать подключение к базе данных.\n"); sb.Append("Произошла неизвестная ошибка.\n"); sb.Append("\n\tописание: "); sb.Append(ex.Message); HasError = true; LastException = ex; throw new InvalidOperationException(sb.ToString()); } }
// public delegate void ChangeRangeDateHandler(object sender); //public event ChangeRangeDateHandler ChangeRangeDate; private void MainForm_Load(object sender, EventArgs e) { #region write ini try { //Создание объекта, для работы с файлом INIManager manager = new INIManager(Application.StartupPath + @"\settings\set.ini"); //Получить значение по ключу name из секции main path_db = manager.GetPrivateString("connection", "db"); db_puth.Value = path_db; path_db = manager.GetPrivateString("workstation", "Key"); Key.Value = path_db; //MessageBox.Show("бд - " + db_puth.Value, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); File.AppendAllText(Application.StartupPath + @"\new_file.txt", "путь к db:" + path_db + "\n"); //Записать значение по ключу age в секции main // manager.WritePrivateString("main", "age", "21"); } catch (Exception ex) { MessageBox.Show("ini не прочтен" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } #endregion var dialog = new LoginFormadd(); //dialog.UserName = ""; //dialog.Password = ""; if ((dialog.ShowDialog() == DialogResult.OK)) { //MessageBox.Show("Не корректный логин или пароль " + dialog.UserName + '/' + dialog.Password, "", MessageBoxButtons.OK, MessageBoxIcon.Error); ApplicationContext dbContext = new ApplicationContext(); try { //string s = dbContext.Database.Connection.ConnectionString; //var builder = new FbConnectionStringBuilder(s); //builder.UserID = dialog.UserName; //builder.Password = dialog.Password; //dbContext.Database.Connection.ConnectionString = builder.ConnectionString; //// пробуем подключится // dbContext.Database.Connection.Open(); // формируем connection string для последующего соединения с нашей базой данных FbConnectionStringBuilder fb_con = new FbConnectionStringBuilder(); fb_con.Charset = "UTF8"; //используемая кодировка fb_con.UserID = "SYSDBA"; //логин fb_con.Password = "******"; //пароль fb_con.Database = db_puth.Value; //путь к файлу базы данных fb_con.ServerType = 0; //указываем тип сервера (0 - "полноценный Firebird" (classic или super server), 1 - встроенный (embedded)) fb = new FbConnection(fb_con.ToString()); //передаем нашу строку подключения объекту класса FbConnection DataSet dataset = new DataSet(); fb.Open(); FbCommand fbcommand = fb.CreateCommand(); fbcommand.CommandType = CommandType.Text; fbcommand.Connection = fb; fbcommand.CommandText = @"SELECT login, pass FROM sec_users WHERE Login='******' AND Pass='******';"; FbDataAdapter adaptor = new FbDataAdapter(fbcommand.CommandText, fbcommand.Connection); adaptor.Fill(dataset, "0"); int count = dataset.Tables[0].Rows.Count; FbDatabaseInfo fb_inf = new FbDatabaseInfo(fb); //информация о БД typelabel.Text = "connect Info: " + fb_inf.ServerClass + "; " + fb_inf.ServerVersion + $"; Rows:{count}"; statusStrip1.Items.Add(typelabel); if (count <= 0) { MessageBox.Show("Не корректный логин или пароль " + dialog.UserName + '/' + dialog.Password, "", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show("Не корректный логин или пароль " + dialog.UserName + '/' + dialog.Password, "", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show(fbcommand.CommandText, "", MessageBoxButtons.OK, MessageBoxIcon.Information); //Application.Exit(); } if (!CheckLic()) { MessageBox.Show(Key.Value + ":" + libtaryMy.CalculateMD5Hash(libtaryMy.GetProcessorIdAndGetOSSerialNumberID()), "", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { // отображаем ошибку MessageBox.Show(ex.Message, "Error"); Application.Exit(); } } else { Application.Exit(); } }
private void MainForm_Load(object sender, EventArgs e) { try { //Создание объекта, для работы с файлом INIManager manager = new INIManager(Application.StartupPath + "\\set.ini"); //Получить значение по ключу name из секции main path_db = manager.GetPrivateString("connection", "db"); db_puth.Value = path_db; File.AppendAllText(Application.StartupPath + @"\Event.log", "путь к db:" + db_puth.Value + "\n"); //Записать значение по ключу age в секции main // manager.WritePrivateString("main", "age", "21"); OnUserNameMessage(path_db); } catch (Exception ex) { MessageBox.Show("ini не прочтен" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } //FbConnectionStringBuilder fb_con = new FbConnectionStringBuilder(); //fb_con.Charset = "WIN1251"; //используемая кодировка //fb_con.UserID = "SYSDBA"; //логин //fb_con.Password = "******"; //пароль //fb_con.Database = db_puth.Value; //путь к файлу базы данных //fb_con.ServerType = 0; //указываем тип сервера (0 - "полноценный Firebird" (classic или super server), 1 - встроенный (embedded)) //fb = new FbConnection(fb_con.ToString()); //передаем нашу строку подключения объекту класса FbConnection //Properties.Settings s = new Properties.Settings(); try { //создаем подключение //conn.Open(); //убрал пока используем ini //fb.Open(); //открываем БД //FbCommand fbcommand = fb.CreateCommand(); //fbcommand.CommandType = CommandType.Text; //fbcommand.Connection = fb; //fbcommand.CommandText = "select (select count(1) from SYS_SESSIONS t2 where SS.\"DATE_TIME\" >= t2.\"DATE_TIME\" and t2.IS_SERVICE_CONNECTION = 0) as N," + // "DATE_TIME as \"Date Time\", " + // //"CURRENT_CONNECTION,"+ // "(select MON$REMOTE_ADDRESS from mon$attachments where MON$ATTACHMENT_ID = SS.\"CURRENT_CONNECTION\") as \"REMOTE ADDRESS\"," + // //"USER_ID,"+ // "(select Login from sec_users where ID = SS.\"USER_ID\")," + // //"EMPLOYEE_ID, "+ // "(select CODE_NAME from dic_employee where ID = SS.\"EMPLOYEE_ID\") as \"CODE NAME\"" + // //",IS_SERVICE_CONNECTION " + // "from SYS_SESSIONS SS " + // "where SS.IS_SERVICE_CONNECTION = 0" + // "order by 1"; //// MessageBox.Show(fbcommand.CommandText); //FbDataAdapter FBAdapter = new FbDataAdapter(fbcommand.CommandText, fbcommand.Connection); //DataSet fbds = new DataSet("first_tab_DS"); //FBAdapter.Fill(fbds, "dic_clients"); string command = "select (select count(1) from SYS_SESSIONS t2 where SS.\"DATE_TIME\" >= t2.\"DATE_TIME\" and t2.IS_SERVICE_CONNECTION = 0) as N," + "DATE_TIME as \"Date Time\", " + //"CURRENT_CONNECTION,"+ "(select MON$REMOTE_ADDRESS from mon$attachments where MON$ATTACHMENT_ID = SS.\"CURRENT_CONNECTION\") as \"REMOTE ADDRESS\"," + //"USER_ID,"+ "(select Login from sec_users where ID = SS.\"USER_ID\")," + //"EMPLOYEE_ID, "+ "(select CODE_NAME from dic_employee where ID = SS.\"EMPLOYEE_ID\") as \"CODE NAME\"" + //",IS_SERVICE_CONNECTION " + "from SYS_SESSIONS SS " + "where SS.IS_SERVICE_CONNECTION = 0" + "order by 1"; //FBAdapter.Fill(Test(command), "dic_clients"); DataSet fbds = Test(command); int count = fbds.Tables[0].Rows.Count; /*количество записей*/ //fbds = fbds1; FbDatabaseInfo fb_inf = new FbDatabaseInfo(fb); //информация о БД //пока у объекта БД не был вызван метод Open() - никакой информации о БД не получить, будет только ошибка //MessageBox.Show("connect Info: " + fb_inf.ServerClass + "; " + fb_inf.ServerVersion); //выводим тип и версию используемого сервера Firebird typelabel.Text = "connect Info: " + fb_inf.ServerClass + "; " + fb_inf.ServerVersion + "; Rows: " + count; statusStrip1.Items.Add(typelabel); //this.dataGridView1.DataSource = fbds.Tables["dic_clients"].DefaultView; dataGridView1.DataSource = fbds.Tables["dic_clients"].DefaultView; dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; fb.Close(); dataGridView1[0, dataGridView1.Rows.Count - 1].Value = "Total Count:"; //dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[0].Style.BackColor = Color.Green; //dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1].Style.ForeColor = Color.Red; } catch (Exception ex) { File.AppendAllText(Application.StartupPath + @"\Event.log", "Не работает. Ошибка: " + ex.Message); MessageBox.Show("Не работает. Ошибка: " + ex.Message); } }