示例#1
0
        private static DbConnection GetConnection(eDatabase databaseType, string connectionString)
        {
            switch (databaseType)
            {
            case eDatabase.SQLServer:
                return(new SqlConnection(connectionString));

            case eDatabase.Sqlite:
                return(new SQLiteConnection(connectionString));

            case eDatabase.Firebird:
                return(new FbConnection(connectionString));

            case eDatabase.Oracle:
                return(new OracleConnection(connectionString));

            case eDatabase.MySql:
                return(new MySqlConnection(connectionString));

            case eDatabase.Access:
                return(new OleDbConnection(connectionString));

            case eDatabase.DB2:
                throw new Exception("The IBM DB2 database is no longer supported.");

            case eDatabase.PostgreSql:
                return(new NpgsqlConnection(connectionString));

            default:
                throw new Exception("Unspecified database type.");
            }
        }
示例#2
0
        static void Main(string[] args)
        {
            int rowNumber    = 0;
            int columnNumber = 0;

            try
            {
                if (!Validate(args))
                {
                    return;
                }

                string    queryFile        = args[0];
                string    csvFile          = args[1];
                string    connectionString = args[2];
                eDatabase database         = (eDatabase)Convert.ToInt32(args[3]);

                using (var connection = GetConnection(database, connectionString))
                {
                    connection.Open();

                    using (var command = connection.CreateCommand())
                    {
                        command.CommandText    = File.ReadAllText(queryFile, Encoding.GetEncoding("ISO-8859-1"));
                        command.Connection     = connection;
                        command.CommandTimeout = TIMEOUT_MILESSECONDS;

                        using (var dr = command.ExecuteReader())
                            using (var sw = new StreamWriter(csvFile, false, Encoding.UTF8))
                                while (dr.Read())
                                {
                                    rowNumber++;

                                    for (columnNumber = 0; columnNumber < dr.FieldCount; columnNumber++)
                                    {
                                        if (columnNumber != 0)
                                        {
                                            sw.Write(";");
                                        }
                                        sw.Write(dr[columnNumber].ToString().Replace("\n", " ").Replace("\r", " ").Trim());
                                    }

                                    sw.Write("\n");
                                }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error on row {0}, column {1}.", rowNumber.ToString(), columnNumber.ToString());
                Console.WriteLine("\n\nError message: " + ex.Message);
                Console.WriteLine("\n\nDetails: " + ex.ToString());
                Console.Read();
            }
        }