private bool sudiNaSpravi(SudijaUcesnik s) { // TODO: Probaj da uradis ovo u NHibernate. try { // can throw InfrastructureException string findSQL = "SELECT * FROM sudija_na_spravi " + "WHERE sudija_id = @sudija_id"; SqlCeCommand cmd = new SqlCeCommand(findSQL); cmd.Parameters.Add("@sudija_id", SqlDbType.Int).Value = s.Id; SqlCeDataReader rdr = SqlCeUtilities.executeReader(cmd, Strings.DATABASE_ACCESS_ERROR_MSG); bool result = false; if (rdr.Read()) { result = true; } rdr.Close(); return(result); } catch (Exception ex) { // TODO: Izgleda da se ovaj izuzetak nigde ne hendluje. throw new InfrastructureException( Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } }
public void update() { int verzijaBaze = SqlCeUtilities.getDatabaseVersionNumber(); if (verzijaBaze == Program.VERZIJA_PROGRAMA) { return; } if (verzijaBaze > Program.VERZIJA_PROGRAMA) { throw new Exception("Greska u programu. Verzija baze je veca od verzije programa."); } int staraVerzijaBaze = verzijaBaze; bool converted = false; if (verzijaBaze == -1 /*baza ne postoji*/) { SqlCeUtilities.ExecuteScript(ConfigurationParameters.DatabaseFile, ConfigurationParameters.Password, "Soko.Update.DatabaseUpdate_version1.txt", true); SqlCeUtilities.updateDatabaseVersionNumber(1); verzijaBaze = 1; converted = true; } if (verzijaBaze == 1 && Program.VERZIJA_PROGRAMA > 1) { SqlCeUtilities.ExecuteScript(ConfigurationParameters.DatabaseFile, ConfigurationParameters.Password, "Soko.Update.DatabaseUpdate_version2.txt", true); SqlCeUtilities.updateDatabaseVersionNumber(2); UpdateDolazakNaTreningMesecni(); verzijaBaze = 2; converted = true; } if (verzijaBaze == 2 && Program.VERZIJA_PROGRAMA > 2) { SqlCeUtilities.updateDatabaseVersionNumber(3); UpdateDolazakNaTreningMesecniJedanDnevniTrening(); verzijaBaze = 3; converted = true; } if (converted) { string msg = String.Format("Baza podataka je konvertovana iz verzije {0} u verziju {1}.", staraVerzijaBaze, verzijaBaze); MessageBox.Show(msg, "Bilten"); if (File.Exists("NHibernateConfig")) { File.Delete("NHibernateConfig"); } } }
public static bool tableExists(string tableName) { string sql = @"SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @TableName"; SqlCeCommand cmd = new SqlCeCommand(sql); cmd.Parameters.Add("@TableName", SqlDbType.NVarChar).Value = tableName; string errMsg = "Greska prilikom citanja podataka iz baze."; SqlCeDataReader rdr = SqlCeUtilities.executeReader(cmd, errMsg); bool result = false; if (rdr.Read()) { result = true; } rdr.Close(); return(result); }
public void CanGenerateSchema() { var cfg = new Configuration(); cfg.Configure(); // na osnovu hibernate.cfg.xml cfg.AddAssembly(typeof(Klub).Assembly); string databaseFile = "BiltenPodaciSchemaExport.sdf"; SqlCeUtilities.CreateDatabase(databaseFile, "", false); // Ako treba (re)definisati neko svojstvo da bude razlicito od hibernate.cfg.xml string connectionString = String.Format("Data Source={0}", databaseFile); cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionString, connectionString); new SchemaExport(cfg) .SetOutputFile("bilten-schema-export.sql") .Execute(false, true, false); }
public static int getDatabaseVersionNumber() { string tableName = "verzija_baze"; if (!SqlCeUtilities.tableExists(tableName)) { return(-1); } string sql = "SELECT broj_verzije FROM " + tableName + " WHERE verzija_id = 1"; SqlCeCommand cmd = new SqlCeCommand(sql); string errMsg = "Greska prilikom citanja podataka iz baze."; SqlCeDataReader rdr = SqlCeUtilities.executeReader(cmd, errMsg); int result = -1; if (rdr.Read()) { result = rdr.GetInt32(0); } rdr.Close(); return(result); }
public void TestFixtureSetUp() { // Export schema from BiltenPodaci.sdf using the ExportSqlCe.exe tool. string schemaFile = "BiltenPodaciScript.sql"; ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = @"..\..\..\..\Bilten\Libs\ExportSqlCe.exe"; startInfo.Arguments = String.Format("\"Data Source=..\\..\\..\\Bilten\\bin\\Debug\\BiltenPodaci.sdf\" {0} schemaonly", schemaFile); var process = Process.Start(startInfo); process.WaitForExit(); // Create database using the schema script, or (if database exists) delete data. string databaseFile = "BiltenPodaci.sdf"; bool createdNew = SqlCeUtilities.CreateDatabase(databaseFile, "", false); if (createdNew) { // Kreiraj semu SqlCeUtilities.ExecuteScript(databaseFile, "", Path.GetFullPath(schemaFile), false); } else { // Brisi podatke SqlCeUtilities.ExecuteScript(databaseFile, "", Path.GetFullPath(@"..\..\BiltenPodaciDelete.sql"), false); } // Create configuration and build session factory. _configuration = new Configuration(); _configuration.Configure(); _configuration.AddAssembly(typeof(Klub).Assembly); _sessionFactory = _configuration.BuildSessionFactory(); }
public static void dropReferentialConstraint(string table, string referencedTable) { string findConstraintSQL = @" SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_TABLE_NAME = @Table AND UNIQUE_CONSTRAINT_TABLE_NAME = @ReferencedTable"; SqlCeCommand cmd = new SqlCeCommand(findConstraintSQL); cmd.Parameters.Add("@Table", SqlDbType.NVarChar).Value = table; cmd.Parameters.Add("@ReferencedTable", SqlDbType.NVarChar).Value = referencedTable; string errMsg = "Greska prilikom citanja podataka iz baze."; SqlCeDataReader rdr = SqlCeUtilities.executeReader(cmd, errMsg); if (!rdr.Read()) { throw new Exception("Constraint does not exist."); } string constraintName = (string)rdr["CONSTRAINT_NAME"]; // NOTE: Izgleda da dodavanje parametara (pomocu @parameterName) radi samo kada je parametar sa desne // strane znaka jednakosti (kao u findConstraintSQL). Zato ovde koristim spajanje stringova. string dropConstraintSQL = "ALTER TABLE " + table + " DROP CONSTRAINT " + constraintName; SqlCeCommand cmd2 = new SqlCeCommand(dropConstraintSQL); SqlCeConnection conn = new SqlCeConnection(ConfigurationParameters.ConnectionString); errMsg = "Neuspesna promena baze."; SqlCeTransaction tr = null; try { conn.Open(); tr = conn.BeginTransaction(); cmd2.Connection = conn; cmd2.Transaction = tr; int result = cmd2.ExecuteNonQuery(); tr.Commit(); } catch (SqlCeException e) { // in Open() if (tr != null) { tr.Rollback(); // TODO: this can throw Exception and InvalidOperationException } throw new InfrastructureException(errMsg, e); } catch (InvalidOperationException e) { // in ExecuteNonQuery(), ExecureScalar() if (tr != null) { tr.Rollback(); } throw new InfrastructureException(errMsg, e); } // za svaki slucaj catch (Exception) { if (tr != null) { tr.Rollback(); } throw; } finally { conn.Close(); } }
public static bool hasUpdates() { int verzijaBaze = SqlCeUtilities.getDatabaseVersionNumber(); return(Program.VERZIJA_PROGRAMA > verzijaBaze); }
static void Main(string[] args) { try { int verzijaBaze = SqlCeUtilities.getDatabaseVersionNumber(); if (verzijaBaze != VERZIJA_PROGRAMA) { if (verzijaBaze == 0) { string msg = "Bazu podataka je nemoguce konvertovati da radi sa trenutnom verzijom programa."; MessageBox.Show(msg, "Registracija"); return; } if (verzijaBaze > VERZIJA_PROGRAMA) { string msg = "Greska u programu. Verzija baze je veca od verzije programa."; MessageBox.Show(msg, "Registracija"); return; } bool converted = false; if (verzijaBaze == 1 && VERZIJA_PROGRAMA > 1) { SqlCeUtilities.ExecuteScript(ConfigurationParameters.DatabaseFile, "", "Registracija.Update.DatabaseUpdate_version2.sql", true); verzijaBaze = 2; converted = true; } if (converted) { string msg = String.Format("Baza podataka je konvertovana u verziju {0}.", verzijaBaze); MessageBox.Show(msg, "Bilten"); if (File.Exists("NHibernateConfig")) { File.Delete("NHibernateConfig"); } } } } catch (Exception ex) { MessageBox.Show(ex.Message); return; } Language.SetKeyboardLanguage(Language.acKeyboardLanguage.hklSerbianLatin); Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("sr-Latn-CS"); // ili // Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("sr-Cyrl-CS"); //Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); // Kreiranje prazne baze //new SqlCeUtilities().CreateDatabase(@"..\..\clanovi_podaci2.sdf", "sdv"); //new DatabaseUpdater().updateDatabase(); //MainForm mainForm = new MainForm(); //Application.Run(mainForm); SingleInstanceApplication.Application.Run(args); }