コード例 #1
0
ファイル: SudijeUcesniciForm.cs プロジェクト: stankela/bilten
        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);
            }
        }
コード例 #2
0
    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");
            }
        }
    }
コード例 #3
0
    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);
    }
コード例 #4
0
        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);
        }
コード例 #5
0
    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);
    }
コード例 #6
0
        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();
        }
コード例 #7
0
    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();
        }
    }
コード例 #8
0
    public static bool hasUpdates()
    {
        int verzijaBaze = SqlCeUtilities.getDatabaseVersionNumber();

        return(Program.VERZIJA_PROGRAMA > verzijaBaze);
    }
コード例 #9
0
        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);
        }