コード例 #1
0
ファイル: TestOdbc.cs プロジェクト: neoplacer/plane-disaster
        public override void TestDbOperations()
        {
            string  fileName = Path.Combine(_tempDirectory, _tempFilePrefix + "-Odbc-TestDbOps.mdb");
            OdbcDba odbcDba  = null;

            try {
                CreateDb(fileName);

                odbcDba = new OdbcDba();
                odbcDba.ConnectMDB(fileName);

                PopulateDb(odbcDba);

                odbcDba.ExecuteSqlCommand(_sqlDropTable);
            }
            finally
            {
                if (odbcDba != null && odbcDba.Connected)
                {
                    odbcDba.Disconnect();
                    odbcDba.Dispose();
                }
                File.Delete(fileName);
                Assert.IsFalse(File.Exists(fileName), "Failed to delete " + fileName);
            }
        }
コード例 #2
0
ファイル: TestOdbc.cs プロジェクト: neoplacer/plane-disaster
        public override void TestProcedureSupport()
        {
            string  fileName = Path.Combine(_tempDirectory, _tempFilePrefix + "-Odbc-TestProcedures.mdb");
            OdbcDba odbcDba  = null;

            try {
                CreateDb(fileName);

                odbcDba = new OdbcDba();
                try {
                    Assert.IsTrue(odbcDba.SupportsProcedures);
                    Assert.Fail("OdbcDba.SupportsProcedures should throw a InvalidOperationException if no database is connected.");
                }
                catch (InvalidOperationException) {}

                odbcDba.ConnectMDB(fileName);
                Assert.IsTrue(odbcDba.SupportsProcedures);
            }
            finally
            {
                if (odbcDba != null && odbcDba.Connected)
                {
                    odbcDba.Disconnect();
                    odbcDba.Dispose();
                }
                File.Delete(fileName);
                Assert.IsFalse(File.Exists(fileName), "Failed to delete " + fileName);
            }
        }
コード例 #3
0
        public static void Main(string[] args)
        {
            GetOpt oGetOpt = new GetOpt(args);
            string MdbFile = "";

            try {
                oGetOpt.SetOpts(new string[] { "c", "d=", "s=" });
                oGetOpt.Parse();
                //DEBUG: Console.WriteLine("Successfully parsed arguments.");
            } catch (ArgumentException) {
                Console.Error.WriteLine("ERROR: arguments not supplied");
                //TODO: Write usage info function
                oGetOpt.Args.ToString();
                Console.WriteLine();
                System.Environment.Exit(666);
            }

            if (!oGetOpt.IsDefined("d"))
            {
                Console.Error.WriteLine("Must specify the database.");
                System.Environment.Exit(666);
            }
            else
            {
                MdbFile = oGetOpt.GetOptionArg("d");
            }

            Console.WriteLine("Database: {0}", MdbFile);
            try {
                if (oGetOpt.HasArgument("s"))
                {
                    Console.WriteLine("SQL Script: {0}", oGetOpt.GetOptionArg("s"));
                }
            } catch (ArgumentNullException) { }

            if (oGetOpt.IsDefined("c"))
            {
                if (File.Exists(MdbFile))
                {
                    Console.Error.WriteLine("JetSQL file \"{0}\" already exists!", MdbFile);
                }
                else
                {
                    JetSqlUtil.CreateMDB(MdbFile);
                }
            }

            //If the Access file doesn't exist at this point we can't go on
            if (!File.Exists(MdbFile))
            {
                Console.Error.WriteLine("JetSQL file \"{0}\" does not exist!", MdbFile);
            }

            if (oGetOpt.IsDefined("s"))
            {
                OdbcDba dbconn = new OdbcDba();
                dbconn.ConnectMDB(MdbFile);
                dbconn.ExecuteSqlFile(oGetOpt.GetOptionArg("s"));
                dbconn.Disconnect();
            }
        }
コード例 #4
0
ファイル: MainForm.cs プロジェクト: neoplacer/plane-disaster
        void CmdConvertClick(object sender, EventArgs e)
        {
            txtLog.Text = String.Format("Start Time: {0}", DateTime.Now.ToLongTimeString());
            OdbcDba   JetDb    = new OdbcDba();
            SQLiteDba SQLiteDb = new SQLiteDba();

            try {
                File.Delete(this.SQLiteFile);
            } catch (IOException) {
                string Msg = String.Format("Cannot delete the existing SQLite file {0}", SQLiteFile);
                MessageBox.Show(Msg);
                return;
            }
            try {
                JetDb.ConnectMDB(this.JetSqlFile);
            } catch (OdbcException ex) {
                //TODO: this is the error code for incorrect access password. Make this a constant.
                if (ex.ErrorCode == -2147217843 || ex.ErrorCode == -2146232009)
                {
                    DialogResult Result;
                    InputDialog  GetPassword = new InputDialog();
                    Result = GetPassword.ShowDialog("Enter the password for the database");
                    if (Result == DialogResult.OK)
                    {
                        try {
                            ((OdbcDba)JetDb).ConnectMDB(JetSqlFile, GetPassword.Input);
                        } catch (OdbcException exSecond) {
                            if (ex.ErrorCode == -2147217843 || ex.ErrorCode == -2146232009)
                            {
                                MessageBox.Show("Incorrect Password");
                            }
                            else
                            {
                                throw exSecond;
                            }
                            return;
                        } finally { GetPassword.Dispose(); }
                    }
                }
                else if (ex.ErrorCode == -2147467259)
                {
                    Text = "PlaneDisaster.NET";
                    string Msg = String.Format("File [{0}] not found.", JetSqlFile);
                    MessageBox.Show(Msg, "Error Opening File");
                    return;
                }
                else
                {
                    throw ex;
                }
            }

            SQLiteDb.Connect(this.SQLiteFile);

            string [] Tables = JetDb.GetTables();

            foreach (string Table in Tables)
            {
                try {
                    SQLiteDb.DataTable2SQLiteTable(JetDb.GetTableAsDataTable(Table));
                } catch (OdbcException ex) {
                    string Message = String.Format("{0}: {1}\n", Table, ex.Message);
                    File.AppendAllText(String.Concat(SQLiteFile, ".log"), Message);
                }
            }
            JetDb.Disconnect();
            SQLiteDb.Disconnect();
            MessageBox.Show("Database Successfully converted.");
            txtLog.Text += String.Format(" End Time: {0}", DateTime.Now.ToLongTimeString());
        }