Esempio n. 1
0
        static public void case_GetDataTypeName()
        {
            // Open Connection
            string          strConn    = connString;
            OleDbConnection connCubrid = conn;

            // Create a test table with 4 columns in various data type
            string testTable      = "table_data_type";
            string strDropTable   = string.Format("DROP TABLE {0}", testTable);
            string strCreateTable = string.Format(@"CREATE TABLE {0}(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,col_1 INT, col_2 VARCHAR, col_3 CHAR,col_4 bit);", testTable);
            string strSqlInsert   = string.Format("INSERT INTO {0}(col_1, col_2, col_3) VALUE(123, 'varchar contents', 'a')", testTable);

            // Execute multiple queries
            ExecuteMultiQueries(connCubrid, new string[] { strDropTable, strCreateTable });

            string          strSqlSelect = string.Format("SELECT * FROM {0} ORDER BY id DESC;", testTable);
            OleDbDataReader OleDbReader  = CreateReader(connCubrid, strSqlSelect);

            // Check for GetDataTypeName returned values
            // Assert.AreEqual("INT", OleDbReader.GetDataTypeName(0));
            // Assert.AreEqual("INT", OleDbReader.GetDataTypeName(1));
            // Assert.AreEqual("VARCHAR", OleDbReader.GetDataTypeName(2));
            // Assert.AreEqual("CHAR", OleDbReader.GetDataTypeName(3));

            Console.WriteLine(OleDbReader.GetDataTypeName(0));
            Console.WriteLine(OleDbReader.GetDataTypeName(1));
            Console.WriteLine(OleDbReader.GetDataTypeName(2));
            Console.WriteLine(OleDbReader.GetDataTypeName(3));
        }
Esempio n. 2
0
        void TestDataReader()
        {
            int    i   = 0;
            string sql = "SELECT * FROM mono_test_table";

            Console.WriteLine("Executing SELECT command...");
            OleDbCommand    cmd    = new OleDbCommand(sql, m_cnc);
            OleDbDataReader reader = cmd.ExecuteReader();

            Console.WriteLine(" Recordset description:");
            for (i = 0; i < reader.FieldCount; i++)
            {
                Console.WriteLine("  Field " + i + ": " +
                                  reader.GetName(i) + " (" +
                                  reader.GetDataTypeName(i) + ")");
            }

            Console.WriteLine("Reading data...");
            i = 0;
            while (reader.Read())
            {
                Console.WriteLine("Row " + i + ":");
                DisplayRow(reader);
                i++;
            }

            reader.Close();
        }
        }// for adding primary keys

        public void transfar_data(string tbName, int size, string[] type)
        {
            OleDbCommand    access_cmd       = new OleDbCommand("SELECT * FROM " + tbName, conn);
            OleDbDataReader access_reader    = access_cmd.ExecuteReader();
            List <string>   data_holder      = new List <string>();
            List <string>   data_holder_rows = new List <string>();
            List <string>   data_type        = new List <string>();
            int             j = 0;

            while (access_reader.Read())
            {
                data_holder.Clear();
                for (int i = 0; i < size; i++)
                {
                    if (j == 0)
                    {
                        data_type.Add(access_reader.GetName(i));
                    }

                    if (access_reader.GetDataTypeName(i).Equals("DBTYPE_DATE"))
                    {
                        string[] temp_date = access_reader.GetValue(i).ToString().Split(' ');
                        if (!String.IsNullOrEmpty(temp_date[0]))
                        {
                            string[] part_date = temp_date[0].Split('/');
                            string   month     = get_month(part_date[1]);
                            data_holder.Add("'" + part_date[2] + "-" + month + "-" + part_date[0] + "'");
                        }
                        else
                        {
                            data_holder.Add("'" + "" + "'");
                        }
                    }
                    else
                    {
                        string s = access_reader.GetValue(i).ToString();
                        if (!String.IsNullOrEmpty(s))
                        {
                            data_holder.Add("'" + s.ToString().Replace("'", "") + "'");
                        }
                        else
                        {
                            data_holder.Add("NULL");
                        }
                    }
                }
                string temp = "(" + String.Join(",", data_holder) + ")";
                data_holder_rows.Add(temp);
                j++;
            }

            string query = "INSERT INTO " + tbName + " (" + String.Join(",", data_type) + ") " + " VALUES " + String.Join(",", data_holder_rows);

            if (data_holder_rows.Count > 0)
            {
                MySqlCommand insrtcmd = new MySqlCommand(query, connection);
                insrtcmd.ExecuteNonQuery();
            }
        }//for transfaring the data from access to mysql
Esempio n. 4
0
 void DisplayRow(OleDbDataReader reader)
 {
     for (int i = 0; i < reader.FieldCount; i++)
     {
         Console.WriteLine(" " + reader.GetDataTypeName(i) + ": " +
                           reader.GetValue(i).ToString());
     }
 }
        internal override Dictionary <string, DBColumn> GetColumns(string TableName)
        {
            Dictionary <string, DBColumn> DBColumns = new Dictionary <string, DBColumn>();

            if (conn == null || conn.State != ConnectionState.Open)
            {
                OpenDB();
            }

            OleDbCommand cmd = new OleDbCommand();

            cmd.Connection  = conn;
            cmd.CommandText = string.Format("Select * From [{0}]", TableName);
            OleDbDataReader OleDbdr = cmd.ExecuteReader(CommandBehavior.SingleRow);

            OleDbdr.Read();
            DataTable ColumnList = OleDbdr.GetSchemaTable();
            int       i          = 0;

            foreach (DataRow dr in ColumnList.Rows)
            {
                DBColumn dbc = new DBColumn()
                {
                    Name = dr["ColumnName"].ToString()
                };
                dbc.Ordinal          = (int)dr["ColumnOrdinal"];
                dbc.Type             = dr["DataType"].ToString();
                dbc.SqlType          = OleDbdr.GetDataTypeName(dbc.Ordinal);
                dbc.Size             = (int)dr["ColumnSize"];
                dbc.NumericPrecision = Convert.ToInt32(dr["NumericPrecision"]);
                dbc.NumericScale     = Convert.ToInt32(dr["NumericScale"]);
                dbc.IsLong           = (bool)dr["IsLong"];
                dbc.IsNullable       = (bool)dr["AllowDBNull"];
                dbc.IsUnique         = (bool)dr["IsUnique"];
                dbc.IsKey            = (bool)dr["IsKey"];
                dbc.IsAutoIncrement  = (bool)dr["IsAutoIncrement"];
                DBColumns.Add(dbc.Name, dbc);
                i++;
            }

            // Limit result to the current table
            string[] restrictionValues = new string[4];
            restrictionValues[2] = TableName;

            ColumnList = conn.GetSchema("Columns", restrictionValues);

            foreach (DataRow dr in ColumnList.Rows)
            {
                DBColumn dbc = DBColumns[dr["COLUMN_NAME"].ToString()];
                dbc.HasDefault        = (bool)dr["COLUMN_HASDEFAULT"];
                dbc.DefaultValue      = dr["COLUMN_DEFAULT"] is DBNull ? string.Empty : dr["COLUMN_DEFAULT"].ToString();
                dbc.DatetimePrecision = dr["DATETIME_PRECISION"] is DBNull ? 0 : Convert.ToInt32(dr["DATETIME_PRECISION"]);
                DBColumns[dr["COLUMN_NAME"].ToString()] = dbc;
            }

            CloseDB();
            return(DBColumns);
        }
Esempio n. 6
0
 public string GetDataTypeName(int i)
 {
     if (SDR != null)
     {
         return(SDR.GetDataTypeName(i));
     }
     else
     {
         return(ODR.GetDataTypeName(i));
     }
 }
Esempio n. 7
0
        /// <summary>
        /// Executes a SELECT query
        /// </summary>
        /// <param name="SQL">SELECT query</param>
        /// <param name="Args">Query arguments</param>
        /// <returns>SQL Rowset</returns>
        public SQLRow[] ExecReader(string SQL, params object[] Args)
        {
            OleDbCommand    CMD    = OC.CreateCommand();
            OleDbDataReader reader = null;

            CMD.CommandText = SQL;
            if (Args != null)
            {
                for (int i = 0; i < Args.Length; i++)
                {
                    if (Args[i] is DateTime)
                    {
                        CMD.Parameters.Add(new OleDbParameter("@arg" + i, ((DateTime)Args[i]).ToString(DT_FORMAT)));
                    }
                    else
                    {
                        CMD.Parameters.Add(new OleDbParameter("@arg" + i, Args[i] == null ? DBNull.Value : Args[i]));
                    }
                }
            }

            try
            {
                reader = CMD.ExecuteReader();
            }
            catch (Exception ex)
            {
                CMD.Dispose();
                if (THROW)
                {
                    throw ex;
                }
            }

            List <SQLRow> SR = new List <SQLRow>();

            while (reader.Read())
            {
                SQLRow SRR = new SQLRow();
                for (int j = 0; j < reader.FieldCount; j++)
                {
                    SRR.Add(reader.GetName(j), reader.GetDataTypeName(j), reader.IsDBNull(j) ? null : reader[j]);
                }
                SR.Add(SRR);
            }

            reader.Close();
            reader.Dispose();

            CMD.Dispose();

            return(SR.ToArray());
        }
Esempio n. 8
0
        /// <summary>
        /// Test basic SQL statements execution
        /// </summary>
        private static void Test_Demo_Basic()
        {
            using (OleDbConnection conn = new OleDbConnection())
            {
                conn.ConnectionString = TestCasesOld.connString;
                conn.Open();

                (new OleDbCommand("drop table if exists t", conn)).ExecuteNonQuery();
                (new OleDbCommand("create table t(id int, str string)", conn)).ExecuteNonQuery();
                (new OleDbCommand("insert into t values(1, 'abc')", conn)).ExecuteNonQuery();

                using (OleDbCommand cmd = new OleDbCommand("select * from t", conn))
                {
                    using (OleDbDataReader reader = cmd.ExecuteReader())
                    {
                        reader.Read();

                        Debug.Assert(reader.GetName(0).ToLower() == "id");
                        Debug.Assert(reader.GetName(1).ToLower() == "str");

                        Debug.Assert(reader.GetDataTypeName(0) == "DBTYPE_I4");
                        Debug.Assert(reader.GetDataTypeName(1) == "DBTYPE_LONGVARCHAR");

                        Debug.Assert(reader.GetFieldType(0).UnderlyingSystemType.Name == "Int32");
                        Debug.Assert(reader.GetFieldType(1).UnderlyingSystemType.Name == "String");

                        Debug.Assert(reader.GetValue(0).ToString() == "1");
                        Debug.Assert(reader.GetString(1) == "abc");

                        Debug.Assert(reader.GetInt32(0) == 1);
                        Debug.Assert(reader.GetString(1) == "abc");
                    }
                }

                (new OleDbCommand("drop table if exists t", conn)).ExecuteNonQuery();
            }
        }
Esempio n. 9
0
        public string ReadExcelCell(OleDbDataReader reader, int pos)
        {
            try
            {
                string result       = "";
                string sectNoDbType = reader.GetDataTypeName(pos);; //单元格类型
                switch (sectNoDbType)
                {
                case "DBTYPE_WVARCHAR":    //文本
                    result = Common.ReadString(reader, pos);
                    break;

                case "DBTYPE_R8":    //数值
                    result = Common.ReadDouble(reader, pos).ToString();
                    break;

                case "DBTYPE_STR":    //字符串
                    result = Common.ReadString(reader, pos);
                    break;

                case "DBTYPE_DATE":    //时间类型
                    result = Common.ReadDateTime(reader, pos).ToString("yyyy-MM-dd HH:mm:ss");
                    break;

                case "DBTYPE_DECIMAL":    //具有固定精度和范围的精确数字值
                    result = Common.ReadDecimal(reader, pos).ToString();
                    break;

                case "DBTYPE_I8":    //8 字节带符号的整数
                    result = Common.ReadInt32(reader, pos).ToString();
                    break;

                default:
                    break;
                }
                return(result);
            }
            catch (Exception e)
            {
                Log.GetInstance().WriteLog(e.Message + e.StackTrace, Log.Level.Error);
                return("");
            }
        }
Esempio n. 10
0
        private string getAbschnittLength(string id)
        {
            string select = "select sum(round(sqrt((xe - xa) * (xe - xa) + (ye - ya) * (ye - ya)))) as länge from netz" +
                            " inner join teilstrecke on teilstrecke.ID = netz.ID_CHILD" +
                            " inner join abschnitt on abschnitt.ID = netz.ID_PARENT" +
                            " connect by prior ID_PARENT = ID_CHILD start WITH netz.ID_PARENT = '?'";
            string          length  = "";
            OleDbCommand    command = new OleDbCommand(select.Replace("?", id), this.connection);
            OleDbDataReader reader  = command.ExecuteReader();

            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    length = reader.GetDataTypeName(0);
                }
            }
            return(length);
        }
        public List <string> GetExcelConnection(string fileName)
        {
            try
            {
                var xlsHeader = new List <string>();
                if (fileName != "")
                {
                    string xlPath = HttpContext.Current.Server.MapPath("~/" + fileName); //fileName.Replace("/", @"\"); //@"F:\AKBook.xls";    //location of xlsx file
                    string constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + xlPath +
                                    ";Extended Properties=\"Excel 12.0 Xml; HDR=YES; IMEX=1;\"";
                    OleDbConnection con = new OleDbConnection(constr);
                    OleDbCommand    cmd = new OleDbCommand("select * from [Sheet1$]", con);
                    con.Open();
                    OleDbDataReader dreader = cmd.ExecuteReader();

                    while (dreader.Read())
                    {
                        for (int col = 0; col < dreader.FieldCount; col++)
                        {
                            var columnName      = dreader.GetName(col).ToString();
                            var columnFieldType = dreader.GetFieldType(col).ToString();    // Gets the column type
                            var columnDbType    = dreader.GetDataTypeName(col).ToString(); // Gets the column database type
                            var columnValue     = dreader.GetValue(col).ToString();
                            if (!xlsHeader.Contains(columnName))
                            {
                                xlsHeader.Add(columnName);
                            }
                        }
                    }
                    dreader.Close();
                    return(xlsHeader);
                }
                else
                {
                    return(xlsHeader);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void GetExcelCostVariantData(AspxCommonInfo aspxCommonObj, string fileName)
        {
            try
            {
                if (fileName != "")
                {
                    string xlPath  = HttpContext.Current.Server.MapPath("~/" + fileName); //@"F:\optionvariant 022113.xls"; //location of xlsx file
                    string constr1 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + xlPath +
                                     ";Extended Properties=\"Excel 12.0 Xml; HDR=YES; IMEX=1;\"";
                    OleDbConnection con1 = new OleDbConnection(constr1);
                    OleDbCommand    cmd1 = new OleDbCommand("select * from [Sheet2$]", con1);
                    con1.Open();
                    OleDbDataReader dreader1 = cmd1.ExecuteReader();
                    while (dreader1.Read())
                    {
                        var costVariantOptions = new List <CostVariantsOptions>();

                        for (int col = 0; col < dreader1.FieldCount; col++)
                        {
                            var columnName      = dreader1.GetName(col).ToString();
                            var columnFieldType = dreader1.GetFieldType(col).ToString();    // Gets the column type
                            var columnDbType    = dreader1.GetDataTypeName(col).ToString(); // Gets the column database type
                            var columnValue     = dreader1.GetValue(col).ToString();
                            costVariantOptions.Add(new CostVariantsOptions()
                            {
                                ColumnName  = columnName,
                                ColumnValue = columnValue
                            });
                            if (dreader1.FieldCount == col + 1)
                            {
                                SaveCostVariantOptionsFromExcel(costVariantOptions, aspxCommonObj);
                            }
                        }
                    }
                    dreader1.Close();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 13
0
        public void SetUp()
        {
            Exception exp = null;

            BeginCase("Setup");
            try
            {
                con             = new OleDbConnection(MonoTests.System.Data.Utils.ConnectedDataProvider.ConnectionString);
                cmd             = new OleDbCommand("Select EmployeeID From Employees Where FirstName = 'Oved'", con);
                cmd.CommandType = CommandType.Text;
                con.Open();

                rdr = cmd.ExecuteReader();
                rdr.Read();

                typeName = rdr.GetDataTypeName(0);
                con.Close();
            }
            catch (Exception ex) { exp = ex; }
            finally { EndCase(exp); }
        }
Esempio n. 14
0
        // -----------------------------------------------------------------------
        //  Get the field list from the _fieldsourcequery
        // -----------------------------------------------------------------------
        private int LoadSourceFieldList()
        {
            int i;

            lbFieldName.Items.Clear();

            OleDbConnection connection = new OleDbConnection(_connectionstring);

            if (connection != null)
            {
                connection.Open();
                string       queryString = _fieldsourcequery;
                OleDbCommand command     = new OleDbCommand(queryString, connection);
                try
                {
                    OleDbDataReader reader = command.ExecuteReader();
                    if (reader.Read())
                    {
                        for (i = 0; i <= (reader.FieldCount - 1); i++)
                        {
                            string fieldname = reader.GetName(i);
                            lbFieldName.Items.Add(fieldname);
                            _fieldtypes.Add(reader.GetDataTypeName(i).ToString());
                        }
                    }
                    reader.Close();
                }
                catch (Exception ex)
                {
                }
                connection.Close();
                return(0);
            }
            else
            {
                return(-1);
            }
        }
        public void GetExcelData(List <FinalImportDataInfo> finalInfo, AspxCommonInfo aspxCommonObj, string fileName)
        {
            try
            {
                if (fileName != "")
                {
                    string xlPath = HttpContext.Current.Server.MapPath("~/" + fileName); //@"F:\AKBook.xls"; //location of xlsx file
                    string constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + xlPath +
                                    ";Extended Properties=\"Excel 12.0 Xml; HDR=YES; IMEX=1;\"";
                    OleDbConnection con = new OleDbConnection(constr);
                    OleDbCommand    cmd = new OleDbCommand("select * from [Sheet1$]", con);
                    con.Open();
                    OleDbDataReader dreader = cmd.ExecuteReader();
                    while (dreader.Read())
                    {
                        var currencyCode = "";
                        var itemValues   = new List <ItemsValues>();

                        for (int col = 0; col < dreader.FieldCount; col++)
                        {
                            var columnName      = dreader.GetName(col).ToString();
                            var columnFieldType = dreader.GetFieldType(col).ToString();    // Gets the column type
                            var columnDbType    = dreader.GetDataTypeName(col).ToString(); // Gets the column database type
                            var columnValue     = dreader.GetValue(col).ToString();
                            var id      = GetAttrubuteId(finalInfo, columnName);
                            var inputId = GetInputTypeId(finalInfo, columnName);
                            var validId = GetValidationTypeId(finalInfo, columnName);
                            if (id > 0)
                            {
                                itemValues.Add(new ItemsValues()
                                {
                                    AttributeId      = id,
                                    InputTypeID      = inputId,
                                    ValidationTypeID = validId,
                                    AttributeValue   = columnValue
                                });
                            }
                            if (columnName == "Category")
                            {
                                itemValues.Add(new ItemsValues()
                                {
                                    AttributeId      = 0,
                                    InputTypeID      = 0,
                                    ValidationTypeID = 0,
                                    AttributeValue   = columnValue
                                });
                            }

                            if (columnName == "CurrencyCode")
                            {
                                currencyCode = columnValue;
                            }

                            if (dreader.FieldCount == col + 1)
                            {
                                int           attributeSetId = 2;
                                int           itemId         = SaveItemFromExcel(itemValues, false, 1, attributeSetId, currencyCode, aspxCommonObj);
                                OracleHandler sqlH           = new OracleHandler();
                                sqlH.ExecuteNonQuery("usp_Aspx_TruncateCategoryForExcel");
                                SaveItemImage(itemId, itemValues, aspxCommonObj);
                                SaveItemAttributesFromExcel(itemId, attributeSetId, itemValues, aspxCommonObj);
                                CacheHelper.Clear("CategoryInfo" + aspxCommonObj.StoreID + aspxCommonObj.PortalID + "_" + aspxCommonObj.CultureName);
                                CacheHelper.Clear("CategoryForSearch" + aspxCommonObj.StoreID + aspxCommonObj.PortalID + "_" + aspxCommonObj.CultureName);
                            }
                        }
                    }
                    dreader.Close();
                    GetExcelCostVariantData(aspxCommonObj, fileName);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 16
0
        /// <summary>
        /// Test SQL statement with parameters
        /// </summary>
        private static void Test_Parameters()
        {
            string val32 = "/asp/sns/member/dotcom-20000.asp";
            string val40 = val32 + new String(' ', 8);

            using (OleDbConnection conn = new OleDbConnection())
            {
                conn.ConnectionString = TestCasesOld.connString;
                conn.Open();

                (new OleDbCommand("DROP TABLE IF EXISTS dat_client_ip_log", conn)).ExecuteNonQuery();
                (new OleDbCommand("CREATE TABLE dat_client_ip_log (request_url character varying(256) DEFAULT '' NOT NULL)", conn)).ExecuteNonQuery();
                //insert 40-chars string
                (new OleDbCommand("INSERT INTO dat_client_ip_log(request_url) VALUES('" + val40 + "')", conn)).ExecuteNonQuery();

                using (OleDbCommand cmd = new OleDbCommand("SELECT request_url, LENGTH(request_url) FROM dat_client_ip_log", conn))
                {
                    using (OleDbDataReader reader = cmd.ExecuteReader())
                    {
                        reader.Read();

                        Debug.Assert(reader.GetString(0) == val32);
                        Debug.Assert(reader.GetInt32(1) == val40.Length);

                        Debug.Assert(reader.GetDataTypeName(0) == "DBTYPE_VARCHAR");
                        Debug.Assert(reader.GetDataTypeName(1) == "DBTYPE_I4");

                        Debug.Assert(reader.GetFieldType(0).UnderlyingSystemType.Name == "String");
                        Debug.Assert(reader.GetFieldType(1).UnderlyingSystemType.Name == "Int32");
                    }
                }


                //Try the same as above, but with parameters
                (new OleDbCommand("DROP TABLE IF EXISTS dat_client_ip_log", conn)).ExecuteNonQuery();
                (new OleDbCommand("CREATE TABLE dat_client_ip_log (request_url character varying(256) DEFAULT '' NOT NULL)", conn)).ExecuteNonQuery();
                //insert 40-chars string
                using (OleDbCommand cmd = new OleDbCommand("INSERT INTO dat_client_ip_log(request_url) VALUES(?)", conn))
                {
                    OleDbParameter parameter = new OleDbParameter("@p1", OleDbType.VarChar, 256);
                    parameter.Value = val40;
                    cmd.Parameters.Add(parameter);

                    cmd.ExecuteNonQuery();
                }

                using (OleDbCommand cmd = new OleDbCommand("SELECT request_url, LENGTH(request_url) FROM dat_client_ip_log", conn))
                {
                    using (OleDbDataReader reader = cmd.ExecuteReader())
                    {
                        reader.Read();

                        Debug.Assert(reader.GetString(0) == val32);
                        Debug.Assert(reader.GetInt32(1) == val40.Length);

                        Debug.Assert(reader.GetDataTypeName(0) == "DBTYPE_VARCHAR");
                        Debug.Assert(reader.GetDataTypeName(1) == "DBTYPE_I4");

                        Debug.Assert(reader.GetFieldType(0).UnderlyingSystemType.Name == "String");
                        Debug.Assert(reader.GetFieldType(1).UnderlyingSystemType.Name == "Int32");
                    }
                }

                (new OleDbCommand("DROP TABLE IF EXISTS dat_client_ip_log", conn)).ExecuteNonQuery();
            }
        }
Esempio n. 17
0
        public static int Main(string[] args)
        {
            int
                Result = -1,
                _ID_;

            StreamWriter
                fstr_out     = null,
                fstr_out_866 = null;

            string
                currentDirectory = System.Reflection.Assembly.GetExecutingAssembly().Location,
                tmpString        = "log.log",
                DbfFileName,
                asciiString,
                cp866String;

            if (currentDirectory.IndexOf("bin") != -1)
            {
                currentDirectory = currentDirectory.Substring(0, currentDirectory.LastIndexOf("bin", currentDirectory.Length - 1));
            }

            byte[]
            asciiBytes,
            cp866Bytes;

            char[]
            cp866Chars;

            #if TEST_DBF_BY_ODBC
            OdbcConnection
                odbc_conn = null;

            OdbcCommand
                odbc_cmd = null;

            OdbcDataReader
                odbc_rdr = null;

            OdbcDataAdapter
                odbc_da = null;
            #endif

            OleDbConnection
                conn = null;

            OleDbCommand
                cmd = null;

            OleDbDataReader
                rdr = null;

            OleDbDataAdapter
                da = null;

            DataTable
                tmpDataTable = null;

            object
                tmpObject;

            try
            {
                try
                {
                    fstr_out           = new StreamWriter(tmpString, false, System.Text.Encoding.GetEncoding(1251));
                    fstr_out.AutoFlush = true;

                    fstr_out_866           = new StreamWriter(tmpString + "_866", false, System.Text.Encoding.GetEncoding(866));
                    fstr_out_866.AutoFlush = true;

                    #if TEST_DBF_BY_ODBC || TEST_DBF || TEST_VFP
                    string
                        PathToDbf               = Path.Combine(currentDirectory, "dbf"),
                        CommonDbfTableName      = "Common",
                        CommonDbfTableSQLCreate = @"
create table " + CommonDbfTableName + @"(
FInt integer,
FChar char(254),
FDate1 date,
FDate2 date
)";
                    #endif

                    #if TEST_DBF_BY_ODBC
                    if (PathToDbf.EndsWith(Path.DirectorySeparatorChar.ToString()))
                    {
                        PathToDbf = PathToDbf.Remove(PathToDbf.Length - 1, 1);
                    }

                    tmpString = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" + PathToDbf + ";";
                    odbc_conn = new OdbcConnection(tmpString);
                    odbc_conn.Open();
                    fstr_out.WriteLine("ConnectionString: " + odbc_conn.ConnectionString);
                    fstr_out.WriteLine("ConnectionTimeout: " + odbc_conn.ConnectionTimeout.ToString());
                    fstr_out.WriteLine("Database: " + odbc_conn.Database);
                    fstr_out.WriteLine("DataSource: " + odbc_conn.DataSource);
                    fstr_out.WriteLine("Driver: " + odbc_conn.Driver);
                    fstr_out.WriteLine("ServerVersion: " + odbc_conn.ServerVersion);
                    fstr_out.WriteLine("State: " + odbc_conn.State.ToString());
                    fstr_out.WriteLine();

                    tmpString = PathToDbf + Path.DirectorySeparatorChar + CommonDbfTableName + ".dbf";
                    if (File.Exists(tmpString))
                    {
                        File.Delete(tmpString);
                    }

                    odbc_cmd             = odbc_conn.CreateCommand();
                    odbc_cmd.CommandType = CommandType.Text;
                    odbc_cmd.CommandText = CommonDbfTableSQLCreate;
                    odbc_cmd.ExecuteNonQuery();

                    odbc_cmd.CommandText = "insert into " + CommonDbfTableName + " (FInt, FChar, FDate1, FDate2) values (1, 'Line# 1 Линия № 1 Лінія № 1', {d'2008-12-31'}, {d'2008-12-31'})";
                    odbc_cmd.ExecuteNonQuery();

                    odbc_cmd.CommandText = "insert into " + CommonDbfTableName + " (FInt, FChar) values (?, ?)";
                    odbc_cmd.Parameters.Clear();
                    odbc_cmd.Parameters.Add("FInt", OdbcType.Int).Value      = 2;
                    odbc_cmd.Parameters.Add("FChar", OdbcType.VarChar).Value = "Line# 2 Линия № 2 Лінія № 2";
                    odbc_cmd.ExecuteNonQuery();

                    tmpString = "select * from " + CommonDbfTableName;
                    odbc_cmd  = new OdbcCommand(tmpString, odbc_conn);

                    odbc_rdr = odbc_cmd.ExecuteReader();
                    while (odbc_rdr.Read())
                    {
                        for (int i = 0; i < odbc_rdr.FieldCount; ++i)
                        {
                            fstr_out.Write(odbc_rdr[odbc_rdr.GetName(i)]);
                            if (i < odbc_rdr.FieldCount)
                            {
                                fstr_out.Write("\t");
                            }
                        }
                        fstr_out.WriteLine();
                    }
                    odbc_rdr.Close();

                    odbc_da = new OdbcDataAdapter(tmpString, odbc_conn);
                    if (tmpDataTable == null)
                    {
                        tmpDataTable = new DataTable();
                    }
                    odbc_da.Fill(tmpDataTable);
                    ShowStru(tmpDataTable, fstr_out);
                    tmpDataTable.Reset();

                    odbc_cmd.CommandText = "select * from testtype_1";

                    fstr_out.WriteLine();
                    fstr_out.WriteLine("OdbcDataAdapter.FillSchema()");
                    odbc_da.SelectCommand = odbc_cmd;
                    odbc_da.FillSchema(tmpDataTable, SchemaType.Source);
                    foreach (DataColumn c in tmpDataTable.Columns)
                    {
                        fstr_out.WriteLine(c.ColumnName + ": \"" + c.DataType.ToString() + "\"");
                    }
                    tmpDataTable.Reset();

                    odbc_rdr = odbc_cmd.ExecuteReader(CommandBehavior.SchemaOnly);
                    fstr_out.WriteLine(Environment.NewLine + "OdbcDataReader.HasRows=" + odbc_rdr.HasRows.ToString());
                    for (int i = 0; i < odbc_rdr.FieldCount; ++i)
                    {
                        fstr_out.WriteLine(odbc_rdr.GetName(i) + " GetDataTypeName(): \"" + odbc_rdr.GetDataTypeName(i) + "\" GetFieldType(): \"" + odbc_rdr.GetFieldType(i) + "\"");
                    }
                    odbc_rdr.Close();

                    /*
                     * odbc_cmd.CommandText="insert into testtype_1 (FLogical) values (true)";
                     * odbc_cmd.ExecuteNonQuery();
                     *
                     * odbc_cmd.CommandText="update testtype_1 set FLogical=false";
                     * odbc_cmd.ExecuteNonQuery();
                     */

                    try
                    {
                        tmpString            = "select * from t"; // t is FoxPro (with cdx) table
                        odbc_cmd.CommandText = tmpString;
                        odbc_rdr             = odbc_cmd.ExecuteReader();
                        odbc_rdr.Close();
                    }
                    catch (OdbcException eException)
                    {
                        tmpString = string.Empty;
                        for (int i = 0; i < eException.Errors.Count; ++i)
                        {
                            if (tmpString != string.Empty)
                            {
                                tmpString += Environment.NewLine;
                            }

                            tmpString += "Index #" + i + "\t" +
                                         "Message: \"" + eException.Errors[i].Message + "\"\t" +
                                         "Native: \"" + eException.Errors[i].NativeError.ToString() + "\"\t" +
                                         "Source: \"" + eException.Errors[i].Source + "\"\t" +
                                         "SQL: \"" + eException.Errors[i].SQLState + "\"";
                        }
                        fstr_out.WriteLine(Environment.NewLine + "OdbcException:" + Environment.NewLine + tmpString + Environment.NewLine);
                    }
                    odbc_conn.Close();
                    #endif

                    #if TEST_DBF
                    if (PathToDbf.EndsWith(Path.DirectorySeparatorChar.ToString()))
                    {
                        PathToDbf = PathToDbf.Remove(PathToDbf.Length - 1, 1);
                    }

                    tmpString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + PathToDbf + ";Extended Properties=dBASE IV;User ID=;Password="******"ConnectionString: " + conn.ConnectionString);
                    fstr_out.WriteLine("ConnectionTimeout: " + conn.ConnectionTimeout.ToString());
                    fstr_out.WriteLine("Database: " + conn.Database);
                    fstr_out.WriteLine("DataSource: " + conn.DataSource);
                    fstr_out.WriteLine("Provider: " + conn.Provider);
                    fstr_out.WriteLine("ServerVersion: " + conn.ServerVersion);
                    fstr_out.WriteLine("State: " + conn.State.ToString());
                    fstr_out.WriteLine();

                    tmpString = PathToDbf + Path.DirectorySeparatorChar + CommonDbfTableName + ".dbf";
                    if (File.Exists(tmpString))
                    {
                        File.Delete(tmpString);
                    }

                    cmd             = conn.CreateCommand();
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = CommonDbfTableSQLCreate;
                    cmd.ExecuteNonQuery();

                    cmd.CommandText = "insert into " + CommonDbfTableName + " (FInt, FChar, FDate1, FDate2) values (1, 'Line# 1 Линия № 1 Лінія № 1', #01/01/2008#, #01/01/2008#)";
                    cmd.ExecuteNonQuery();

                    cmd.CommandText = "insert into " + CommonDbfTableName + " (FInt, FChar) values (?, ?)";
                    cmd.Parameters.Clear();
                    cmd.Parameters.Add("FInt", OleDbType.Integer).Value  = 2;
                    cmd.Parameters.Add("FChar", OleDbType.VarChar).Value = "Line# 2 Линия № 2 Лінія № 2";
                    cmd.ExecuteNonQuery();

                    tmpString = "select * from " + CommonDbfTableName;
                    cmd       = new OleDbCommand(tmpString, conn);
                    rdr       = cmd.ExecuteReader();
                    while (rdr.Read())
                    {
                        for (int i = 0; i < rdr.FieldCount; ++i)
                        {
                            fstr_out.Write(rdr[rdr.GetName(i)]);
                            if (i < rdr.FieldCount)
                            {
                                fstr_out.Write("\t");
                            }
                        }
                        fstr_out.WriteLine();
                    }
                    rdr.Close();

                    tmpString = "select * from dbffile";
                    cmd       = new OleDbCommand(tmpString, conn);
                    rdr       = cmd.ExecuteReader();
                    fstr_out.WriteLine();
                    while (rdr.Read())
                    {
                        fstr_out.WriteLine(rdr.GetString(rdr.GetOrdinal("BANK")));
                    }
                    rdr.Close();

                    if (tmpDataTable == null)
                    {
                        tmpDataTable = new DataTable();
                    }
                    else
                    {
                        tmpDataTable.Reset();
                    }

                    if (da == null)
                    {
                        da = new OleDbDataAdapter(cmd);
                    }
                    da.Fill(tmpDataTable);
                    ShowStru(tmpDataTable, fstr_out);
                    tmpDataTable.Reset();
                    fstr_out.WriteLine();

                    cmd.CommandText = "select * from testtype_1";

                    fstr_out.WriteLine(cmd.CommandText);
                    fstr_out.WriteLine(new string('-', cmd.CommandText.Length));
                    fstr_out.WriteLine();
                    fstr_out.WriteLine("OleDbDataAdapter.FillSchema()");
                    da.SelectCommand = cmd;
                    da.FillSchema(tmpDataTable, SchemaType.Source);
                    foreach (DataColumn c in tmpDataTable.Columns)
                    {
                        fstr_out.WriteLine(c.ColumnName + ": \"" + c.DataType.ToString() + "\"");
                    }
                    tmpDataTable.Reset();
                    fstr_out.WriteLine();

                    fstr_out.WriteLine("OleDbCommand.ExecuteReader(CommandBehavior.SchemaOnly)");
                    rdr = cmd.ExecuteReader(CommandBehavior.SchemaOnly);
                    fstr_out.WriteLine("OleDbDataReader.HasRows=" + rdr.HasRows.ToString());
                    for (int i = 0; i < rdr.FieldCount; ++i)
                    {
                        fstr_out.WriteLine(rdr.GetName(i) + " " + rdr.GetDataTypeName(i) + " " + rdr.GetFieldType(i));
                    }
                    rdr.Close();
                    fstr_out.WriteLine();

                    cmd.CommandText = "select * from testtype_2";

                    fstr_out.WriteLine(cmd.CommandText);
                    fstr_out.WriteLine(new string('-', cmd.CommandText.Length));
                    fstr_out.WriteLine();
                    fstr_out.WriteLine("OleDbDataAdapter.FillSchema()");
                    da.SelectCommand = cmd;
                    da.FillSchema(tmpDataTable, SchemaType.Source);
                    foreach (DataColumn c in tmpDataTable.Columns)
                    {
                        fstr_out.WriteLine(c.ColumnName + ": \"" + c.DataType.ToString() + "\"");
                    }
                    tmpDataTable.Reset();
                    fstr_out.WriteLine();

                    fstr_out.WriteLine("OleDbCommand.ExecuteReader(CommandBehavior.SchemaOnly)");
                    rdr = cmd.ExecuteReader(CommandBehavior.SchemaOnly);
                    fstr_out.WriteLine("OleDbDataReader.HasRows=" + rdr.HasRows.ToString());
                    for (int i = 0; i < rdr.FieldCount; ++i)
                    {
                        fstr_out.WriteLine(rdr.GetName(i) + " " + rdr.GetDataTypeName(i) + " " + rdr.GetFieldType(i));
                    }
                    rdr.Close();
                    fstr_out.WriteLine();

                    try
                    {
                        tmpString       = "select * from t";                         // t is FoxPro (with cdx) table
                        cmd.CommandText = tmpString;
                        rdr             = cmd.ExecuteReader();
                        rdr.Close();
                    }
                    catch (OleDbException eException)
                    {
                        tmpString = string.Empty;
                        for (int i = 0; i < eException.Errors.Count; ++i)
                        {
                            if (tmpString != string.Empty)
                            {
                                tmpString += Environment.NewLine;
                            }

                            tmpString += "Index #" + i + "\t" +
                                         "Message: \"" + eException.Errors[i].Message + "\"\t" +
                                         "Native: \"" + eException.Errors[i].NativeError.ToString() + "\"\t" +
                                         "Source: \"" + eException.Errors[i].Source + "\"\t" +
                                         "SQL: \"" + eException.Errors[i].SQLState + "\"";
                        }
                        fstr_out.WriteLine(Environment.NewLine + "OleDbException:" + Environment.NewLine + tmpString + Environment.NewLine);
                    }

                    cmd.CommandType = CommandType.Text;
                    DbfFileName     = "test_ins";
                    cmd.CommandText = "delete from " + DbfFileName;
                    cmd.ExecuteNonQuery();

                    cmd.CommandText = "select max(ID) from " + DbfFileName;
                    tmpObject       = cmd.ExecuteScalar();
                    _ID_            = !Convert.IsDBNull(tmpObject) ? Convert.ToInt32(tmpObject) + 1 : 1;

                    cmd.CommandText = "insert into " + DbfFileName + " (ID, FCHAR, DDATE, FNUMERIC) values (?, ?, ?, ?)";
                    cmd.Parameters.Clear();
                    cmd.Parameters.Add("ID", OleDbType.Numeric).Value       = _ID_;
                    cmd.Parameters.Add("FCHAR", OleDbType.VarChar).Value    = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                    cmd.Parameters.Add("DDATE", OleDbType.Date).Value       = DateTime.Now;
                    cmd.Parameters.Add("FNUMERIC", OleDbType.Numeric).Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = "abcdefghijklmnopqrstuvwxyz";
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = "абвгдежзийклмнопрстуфхцчшщъыьэюя";
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = "ЁёҐґІіЇїЄє№";
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    asciiString = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
                    asciiBytes  = System.Text.Encoding.GetEncoding(1251).GetBytes(asciiString);
                    cp866Bytes  = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(1251), System.Text.Encoding.GetEncoding(866), asciiBytes);
                    cp866Chars  = new char[System.Text.Encoding.GetEncoding(866).GetCharCount(cp866Bytes, 0, cp866Bytes.Length)];
                    System.Text.Encoding.GetEncoding(866).GetChars(cp866Bytes, 0, cp866Bytes.Length, cp866Chars, 0);
                    cp866String = new string(cp866Chars);
                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = cp866String;
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    asciiString = "абвгдежзийклмнопрстуфхцчшщъыьэюя";
                    asciiBytes  = System.Text.Encoding.GetEncoding(1251).GetBytes(asciiString);
                    cp866Bytes  = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(1251), System.Text.Encoding.GetEncoding(866), asciiBytes);
                    cp866Chars  = new char[System.Text.Encoding.GetEncoding(866).GetCharCount(cp866Bytes, 0, cp866Bytes.Length)];
                    System.Text.Encoding.GetEncoding(866).GetChars(cp866Bytes, 0, cp866Bytes.Length, cp866Chars, 0);
                    cp866String = new string(cp866Chars);
                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = cp866String;
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    asciiString   = "ЁёҐґІіЇїЄє№";
                    asciiBytes    = System.Text.Encoding.GetEncoding(1251).GetBytes(asciiString);
                    asciiBytes[2] = 0x0c3;                           // 0x0a5 (165) -> 0x0c3 (195) Ґ -> Г
                    asciiBytes[3] = 0x0e3;                           // 0x0b4 (180) -> 0x0e3 (227) ґ -> г
                    asciiBytes[4] = 0x0a1;                           // 0x0b2 (178) -> 0x0a1 (161) І -> Ў
                    asciiBytes[5] = 0x0a2;                           // 0x0b3 (179) -> 0x0a2 (162) і -> ў
                    asciiBytes[6] = 0x0b0;                           // 0x0af (175) -> 0x0b0 (176) Ї -> °
                    asciiBytes[7] = 0x0b7;                           // 0x0bf (191) -> 0x0b7 (183) ї -> ·
                    asciiBytes[8] = 0x0af;                           // 0x0aa (170) -> 0x0af (175) Є -> Ї
                    asciiBytes[9] = 0x0bf;                           // 0x0ba (186) -> 0x0bf (191) є -> ї
                    cp866Bytes    = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(1251), System.Text.Encoding.GetEncoding(866), asciiBytes);
                    cp866Chars    = new char[System.Text.Encoding.GetEncoding(866).GetCharCount(cp866Bytes, 0, cp866Bytes.Length)];
                    System.Text.Encoding.GetEncoding(866).GetChars(cp866Bytes, 0, cp866Bytes.Length, cp866Chars, 0);
                    cp866Chars[7] = (char)0x02219;
                    cp866String   = new string(cp866Chars);

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = cp866String;
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = CP1251ToCP866("Line# 2 Линия № 2 Лінія № 2");
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    if (!PathToDbf.EndsWith(Path.DirectorySeparatorChar.ToString()))
                    {
                        PathToDbf += Path.DirectorySeparatorChar;
                    }

                    DbfFileName = "test_ADO.dbf";
                    if (File.Exists(PathToDbf + DbfFileName))
                    {
                        File.Delete(PathToDbf + DbfFileName);
                    }

                    DbfFileName = Path.GetFileNameWithoutExtension(DbfFileName);

                    cmd.CommandText = "create table " + DbfFileName + "(ID numeric(18,0), FCHAR varchar(254), DDATE date, FNUMERIC numeric(10,4))";
                    cmd.ExecuteNonQuery();

                    cmd.CommandText = "select max(ID) from " + DbfFileName;
                    tmpObject       = cmd.ExecuteScalar();
                    _ID_            = !Convert.IsDBNull(tmpObject) ? Convert.ToInt32(tmpObject) + 1 : 1;

                    cmd.CommandText = "insert into " + DbfFileName + " (ID, FCHAR, DDATE, FNUMERIC) values (?, ?, ?, ?)";
                    cmd.Parameters.Clear();
                    cmd.Parameters.Add("ID", OleDbType.Numeric).Value       = _ID_;
                    cmd.Parameters.Add("FCHAR", OleDbType.VarChar).Value    = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                    cmd.Parameters.Add("DDATE", OleDbType.Date).Value       = DateTime.Now;
                    cmd.Parameters.Add("FNUMERIC", OleDbType.Numeric).Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = "abcdefghijklmnopqrstuvwxyz";
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = "абвгдежзийклмнопрстуфхцчшщъыьэюя";
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = "ЁёҐґІіЇїЄє№";
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    asciiString = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
                    asciiBytes  = System.Text.Encoding.GetEncoding(1251).GetBytes(asciiString);
                    cp866Bytes  = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(1251), System.Text.Encoding.GetEncoding(866), asciiBytes);
                    cp866Chars  = new char[System.Text.Encoding.GetEncoding(866).GetCharCount(cp866Bytes, 0, cp866Bytes.Length)];
                    System.Text.Encoding.GetEncoding(866).GetChars(cp866Bytes, 0, cp866Bytes.Length, cp866Chars, 0);
                    cp866String = new string(cp866Chars);
                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = cp866String;
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    asciiString = "абвгдежзийклмнопрстуфхцчшщъыьэюя";
                    asciiBytes  = System.Text.Encoding.GetEncoding(1251).GetBytes(asciiString);
                    cp866Bytes  = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(1251), System.Text.Encoding.GetEncoding(866), asciiBytes);
                    cp866Chars  = new char[System.Text.Encoding.GetEncoding(866).GetCharCount(cp866Bytes, 0, cp866Bytes.Length)];
                    System.Text.Encoding.GetEncoding(866).GetChars(cp866Bytes, 0, cp866Bytes.Length, cp866Chars, 0);
                    cp866String = new string(cp866Chars);
                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = cp866String;
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    asciiString   = "ЁёҐґІіЇїЄє№";
                    asciiBytes    = System.Text.Encoding.GetEncoding(1251).GetBytes(asciiString);
                    asciiBytes[2] = 0x0c3;                           // 0x0a5 (165) -> 0x0c3 (195) Ґ -> Г
                    asciiBytes[3] = 0x0e3;                           // 0x0b4 (180) -> 0x0e3 (227) ґ -> г
                    asciiBytes[4] = 0x0a1;                           // 0x0b2 (178) -> 0x0a1 (161) І -> Ў
                    asciiBytes[5] = 0x0a2;                           // 0x0b3 (179) -> 0x0a2 (162) і -> ў
                    asciiBytes[6] = 0x0b0;                           // 0x0af (175) -> 0x0b0 (176) Ї -> °
                    asciiBytes[7] = 0x0b7;                           // 0x0bf (191) -> 0x0b7 (183) ї -> ·
                    asciiBytes[8] = 0x0af;                           // 0x0aa (170) -> 0x0af (175) Є -> Ї
                    asciiBytes[9] = 0x0bf;                           // 0x0ba (186) -> 0x0bf (191) є -> ї
                    cp866Bytes    = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(1251), System.Text.Encoding.GetEncoding(866), asciiBytes);
                    cp866Chars    = new char[System.Text.Encoding.GetEncoding(866).GetCharCount(cp866Bytes, 0, cp866Bytes.Length)];
                    System.Text.Encoding.GetEncoding(866).GetChars(cp866Bytes, 0, cp866Bytes.Length, cp866Chars, 0);
                    cp866Chars[7] = (char)0x02219;                           // •
                    cp866String   = new string(cp866Chars);
                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = cp866String;
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = tmpString = CP1251ToCP866("Line# 2 Линия № 2 Лінія № 2");
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();
                    fstr_out_866.WriteLine(tmpString);

                    #if TEST_DBF_JOIN
                    cmd.CommandType = CommandType.Text;

/*
 *                                                      cmd.CommandText=@"
 * select
 * m.*,
 * d_l_I.*,
 * d_l_II.*
 * from
 * master m
 * left outer join det_l_I d_l_I on (d_l_I.Master_ID=m.ID)
 * left outer join det_l_II d_l_II on (d_l_II.Master_ID=m.ID) and (d_l_II.det_l_I_ID=d_l_I.ID)
 * order by m.ID, d_l_I.ID, d_l_II.ID
 * ";
 */
/*
 *                                                      cmd.CommandText=@"
 * select
 * m.*,
 * d_l_I.*,
 * d_l_II.*
 * from
 * master m
 * left outer join det_l_I d_l_I on (d_l_I.Master_ID=m.ID)
 * left outer join det_l_II d_l_II on (d_l_II.Master_ID=d_l_I.Master_ID) and (d_l_II.det_l_I_ID=d_l_I.ID)
 * order by m.ID, d_l_I.ID, d_l_II.ID
 * ";
 */
                    cmd.CommandText = @"
select
m.*,
d_l_I.*,
d_l_II.*
from
master m
join det_l_I d_l_I on (d_l_I.Master_ID=m.ID)
join det_l_II d_l_II on (d_l_II.Master_ID=m.ID) and (d_l_II.det_l_I_ID=d_l_I.ID)
order by m.ID, d_l_I.ID, d_l_II.ID
";

/*
 *                                                      cmd.CommandText=@"
 * select
 * m.*,
 * d_l_I.*,
 * d_l_II.*
 * from
 * master m
 * join det_l_I d_l_I on (d_l_I.Master_ID=m.ID)
 * join det_l_II d_l_II on (d_l_II.Master_ID=d_l_I.Master_ID) and (d_l_II.det_l_I_ID=d_l_I.ID)
 * order by m.ID, d_l_I.ID, d_l_II.ID
 * ";
 */

                    if (da == null)
                    {
                        da = new OleDbDataAdapter(cmd);
                    }
                    else
                    {
                        da.SelectCommand = cmd;
                    }

                    if (tmpDataTable == null)
                    {
                        tmpDataTable = new DataTable();
                    }
                    else
                    {
                        tmpDataTable.Reset();
                    }

                    da.Fill(tmpDataTable);
                    tmpDataTable.Reset();
                    #endif

                    conn.Close();
                    #endif

                    #if TEST_VFP
                    if (!PathToDbf.EndsWith(Path.DirectorySeparatorChar.ToString()))
                    {
                        PathToDbf += Path.DirectorySeparatorChar;
                    }

                    tmpString = "Provider=vfpoledb.1;Data Source=" + PathToDbf;                        //Collating Sequence=general";
                    conn      = new OleDbConnection(tmpString);
                    conn.Open();
                    fstr_out.WriteLine("ConnectionString: " + conn.ConnectionString);
                    fstr_out.WriteLine("ConnectionTimeout: " + conn.ConnectionTimeout.ToString());
                    fstr_out.WriteLine("Database: " + conn.Database);
                    fstr_out.WriteLine("DataSource: " + conn.DataSource);
                    fstr_out.WriteLine("Provider: " + conn.Provider);
                    fstr_out.WriteLine("ServerVersion: " + conn.ServerVersion);
                    fstr_out.WriteLine("State: " + conn.State.ToString());
                    fstr_out.WriteLine();

                    tmpString = PathToDbf + CommonDbfTableName + ".dbf";
                    if (File.Exists(tmpString))
                    {
                        File.Delete(tmpString);
                    }

                    cmd             = conn.CreateCommand();
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = CommonDbfTableSQLCreate;
                    cmd.ExecuteNonQuery();

                    cmd.CommandText = "insert into " + CommonDbfTableName + " (FInt, FChar) values (1, 'Line# 1 Линия № 1 Лінія № 1')";
                    cmd.ExecuteNonQuery();

                    cmd.CommandText = "insert into " + CommonDbfTableName + " (FInt, FChar, FDate1, FDate2) values (?, ?, ?, ?)";
                    cmd.Parameters.Clear();
                    cmd.Parameters.Add("FInt", OleDbType.Integer).Value  = 2;
                    cmd.Parameters.Add("FChar", OleDbType.VarChar).Value = "Line# 2 Линия № 2 Лінія № 2";
                    cmd.Parameters.Add("FDate1", OleDbType.DBDate).Value = DateTime.Now;
                    cmd.Parameters.Add("FDate2", OleDbType.Date).Value   = DateTime.Now;
                    cmd.ExecuteNonQuery();

                    cmd.CommandText = "insert into test_t3 (FDate1, FDate2, FChar1) values (?, ?, ?)";
                    cmd.Parameters.Clear();
                    cmd.Parameters.Add("FDate1", OleDbType.Date).Value   = DateTime.Now;
                    cmd.Parameters.Add("FDate2", OleDbType.DBDate).Value = DateTime.Now;
                    cmd.Parameters.Add("FChar1", OleDbType.Char).Value   = CP1251ToCP866("Line# 2 Линия № 2 Лінія № 2");
                    cmd.ExecuteNonQuery();

                    cmd.CommandText = "insert into test_t3 (FDate1, FDate2, FChar1) values ({12/31/2008},{12/31/2008},'" + CP1251ToCP866("Line# 2 Линия № 2 Лінія № 2") + "')";
                    cmd.ExecuteNonQuery();

                    DbfFileName     = "test_ins";
                    cmd.CommandText = "delete from " + DbfFileName;
                    cmd.ExecuteNonQuery();

                    cmd.CommandText = "select max(ID) from " + DbfFileName;
                    tmpObject       = cmd.ExecuteScalar();
                    _ID_            = !Convert.IsDBNull(tmpObject) ? Convert.ToInt32(tmpObject) + 1 : 1;

                    cmd.CommandText = "insert into " + DbfFileName + " (ID, FCHAR, DDATE, FNUMERIC) values (?, ?, ?, ?)";
                    cmd.Parameters.Clear();
                    cmd.Parameters.Add("ID", OleDbType.Numeric).Value       = _ID_;
                    cmd.Parameters.Add("FCHAR", OleDbType.VarChar).Value    = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                    cmd.Parameters.Add("DDATE", OleDbType.Date).Value       = DateTime.Now;
                    cmd.Parameters.Add("FNUMERIC", OleDbType.Numeric).Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = "abcdefghijklmnopqrstuvwxyz";
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = "абвгдежзийклмнопрстуфхцчшщъыьэюя";
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = "ЁёҐґІіЇїЄє№";
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    asciiString = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
                    asciiBytes  = System.Text.Encoding.GetEncoding(1251).GetBytes(asciiString);
                    cp866Bytes  = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(1251), System.Text.Encoding.GetEncoding(866), asciiBytes);
                    cp866Chars  = new char[System.Text.Encoding.GetEncoding(866).GetCharCount(cp866Bytes, 0, cp866Bytes.Length)];
                    System.Text.Encoding.GetEncoding(866).GetChars(cp866Bytes, 0, cp866Bytes.Length, cp866Chars, 0);
                    cp866String = new string(cp866Chars);
                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = cp866String;
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    asciiString = "абвгдежзийклмнопрстуфхцчшщъыьэюя";
                    asciiBytes  = System.Text.Encoding.GetEncoding(1251).GetBytes(asciiString);
                    cp866Bytes  = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(1251), System.Text.Encoding.GetEncoding(866), asciiBytes);
                    cp866Chars  = new char[System.Text.Encoding.GetEncoding(866).GetCharCount(cp866Bytes, 0, cp866Bytes.Length)];
                    System.Text.Encoding.GetEncoding(866).GetChars(cp866Bytes, 0, cp866Bytes.Length, cp866Chars, 0);
                    cp866String = new string(cp866Chars);
                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = cp866String;
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    asciiString   = "ЁёҐґІіЇїЄє№";
                    asciiBytes    = System.Text.Encoding.GetEncoding(1251).GetBytes(asciiString);
                    asciiBytes[2] = 0x0c3;                           // 0x0a5 (165) -> 0x0c3 (195) Ґ -> Г
                    asciiBytes[3] = 0x0e3;                           // 0x0b4 (180) -> 0x0e3 (227) ґ -> г
                    asciiBytes[4] = 0x0a1;                           // 0x0b2 (178) -> 0x0a1 (161) І -> Ў
                    asciiBytes[5] = 0x0a2;                           // 0x0b3 (179) -> 0x0a2 (162) і -> ў
                    asciiBytes[6] = 0x0b0;                           // 0x0af (175) -> 0x0b0 (176) Ї -> °
                    asciiBytes[7] = 0x0b7;                           // 0x0bf (191) -> 0x0b7 (183) ї -> ·
                    asciiBytes[8] = 0x0af;                           // 0x0aa (170) -> 0x0af (175) Є -> Ї
                    asciiBytes[9] = 0x0bf;                           // 0x0ba (186) -> 0x0bf (191) є -> ї
                    cp866Bytes    = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(1251), System.Text.Encoding.GetEncoding(866), asciiBytes);
                    cp866Chars    = new char[System.Text.Encoding.GetEncoding(866).GetCharCount(cp866Bytes, 0, cp866Bytes.Length)];
                    System.Text.Encoding.GetEncoding(866).GetChars(cp866Bytes, 0, cp866Bytes.Length, cp866Chars, 0);
                    cp866Chars[7] = (char)0x02219;
                    cp866String   = new string(cp866Chars);

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = cp866String;
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    cmd.Parameters["ID"].Value       = ++_ID_;
                    cmd.Parameters["FCHAR"].Value    = CP1251ToCP866("Line# 2 Линия № 2 Лінія № 2");
                    cmd.Parameters["DDATE"].Value    = DateTime.Now;
                    cmd.Parameters["FNUMERIC"].Value = 99.999 * _ID_;
                    cmd.ExecuteNonQuery();

                    if (tmpDataTable == null)
                    {
                        tmpDataTable = new DataTable();
                    }
                    else
                    {
                        tmpDataTable.Reset();
                    }

                    cmd.CommandText = "select * from " + CommonDbfTableName;
                    if (da == null)
                    {
                        da = new OleDbDataAdapter(cmd);
                    }
                    else
                    {
                        da.SelectCommand = cmd;
                    }

                    da.Fill(tmpDataTable);

                    tmpString = "select * from baza";
                    cmd       = new OleDbCommand(tmpString, conn);
                    rdr       = cmd.ExecuteReader();
                    while (rdr.Read())
                    {
                        for (int i = 0; i < rdr.FieldCount; ++i)
                        {
                            fstr_out.Write(rdr[rdr.GetName(i)]);
                            if (i < rdr.FieldCount)
                            {
                                fstr_out.Write("\t");
                            }
                        }
                        fstr_out.WriteLine();
                    }
                    rdr.Close();
                    fstr_out.WriteLine();

                    if (tmpDataTable == null)
                    {
                        tmpDataTable = new DataTable();
                    }
                    else
                    {
                        tmpDataTable.Reset();
                    }

                    if (da == null)
                    {
                        da = new OleDbDataAdapter(cmd);
                    }
                    else
                    {
                        da.SelectCommand = cmd;
                    }

                    da.Fill(tmpDataTable);
                    foreach (DataRow _r_ in tmpDataTable.Rows)
                    {
                        foreach (DataColumn _c_ in tmpDataTable.Columns)
                        {
                            fstr_out.Write(_r_[_c_.ColumnName] + "\t");
                        }
                        fstr_out.WriteLine();
                    }
                    fstr_out.WriteLine();

                    cmd.CommandText  = "select * from test_ins";
                    da.SelectCommand = cmd;
                    tmpDataTable.Reset();
                    da.Fill(tmpDataTable);
                    foreach (DataRow _r_ in tmpDataTable.Rows)
                    {
                        foreach (DataColumn _c_ in tmpDataTable.Columns)
                        {
                            fstr_out.Write(_r_[_c_.ColumnName] + "\t");
                        }
                        fstr_out.WriteLine();
                    }
                    fstr_out.WriteLine();

                    tmpString = "select * from t";
                    cmd       = new OleDbCommand(tmpString, conn);
                    rdr       = cmd.ExecuteReader();
                    while (rdr.Read())
                    {
                        for (int i = 0; i < rdr.FieldCount; ++i)
                        {
                            fstr_out.Write(rdr[rdr.GetName(i)]);
                            if (i < rdr.FieldCount)
                            {
                                fstr_out.Write("\t");
                            }
                        }
                        fstr_out.WriteLine();
                    }
                    rdr.Close();
                    fstr_out.WriteLine();

                    cmd.CommandType = CommandType.Text;

/*
 *                                              cmd.CommandText=@"
 * select
 * m.*,
 * d_l_I.*,
 * d_l_II.*
 * from
 * master m
 * left outer join det_l_I d_l_I on (d_l_I.Master_ID=m.ID)
 * left outer join det_l_II d_l_II on (d_l_II.Master_ID=m.ID) and (d_l_II.det_l_I_ID=d_l_I.ID)
 * order by m.ID, d_l_I.ID, d_l_II.ID
 * ";
 */
/*
 *                                              cmd.CommandText=@"
 * select
 * m.*,
 * d_l_I.*,
 * d_l_II.*
 * from
 * master m
 * left outer join det_l_I d_l_I on (d_l_I.Master_ID=m.ID)
 * left outer join det_l_II d_l_II on (d_l_II.Master_ID=d_l_I.Master_ID) and (d_l_II.det_l_I_ID=d_l_I.ID)
 * order by m.ID, d_l_I.ID, d_l_II.ID
 * ";
 */

                    cmd.CommandText = @"
select
m.*,
d_l_I.*,
d_l_II.*
from
master m
join det_l_I d_l_I on (d_l_I.Master_ID=m.ID)
join det_l_II d_l_II on (d_l_II.Master_ID=m.ID) and (d_l_II.det_l_I_ID=d_l_I.ID)
order by m.ID, d_l_I.ID, d_l_II.ID
";

/*
 *                                              cmd.CommandText=@"
 * select
 * m.*,
 * d_l_I.*,
 * d_l_II.*
 * from
 * master m
 * join det_l_I d_l_I on (d_l_I.Master_ID=m.ID)
 * join det_l_II d_l_II on (d_l_II.Master_ID=d_l_I.Master_ID) and (d_l_II.det_l_I_ID=d_l_I.ID)
 * order by m.ID, d_l_I.ID, d_l_II.ID
 * ";
 */

                    if (da == null)
                    {
                        da = new OleDbDataAdapter(cmd);
                    }
                    else
                    {
                        da.SelectCommand = cmd;
                    }

                    if (tmpDataTable == null)
                    {
                        tmpDataTable = new DataTable();
                    }
                    else
                    {
                        tmpDataTable.Reset();
                    }

                    da.Fill(tmpDataTable);
                    tmpDataTable.Reset();

                    conn.Close();
                    #endif

                    Result = 0;
                }
                catch (Exception eException)
                {
                    Console.WriteLine(eException.GetType().FullName + Environment.NewLine + "Message: " + eException.Message + Environment.NewLine + "StackTrace:" + Environment.NewLine + eException.StackTrace);
                }
            }
            finally
            {
                #if TEST_DBF_BY_ODBC
                if (odbc_rdr != null && !odbc_rdr.IsClosed)
                {
                    odbc_rdr.Close();
                }

                if (odbc_conn != null && odbc_conn.State == System.Data.ConnectionState.Open)
                {
                    odbc_conn.Close();
                }
                #endif

                if (rdr != null && !rdr.IsClosed)
                {
                    rdr.Close();
                }

                if (conn != null && conn.State == System.Data.ConnectionState.Open)
                {
                    conn.Close();
                }

                if (fstr_out != null)
                {
                    fstr_out.Close();
                }

                if (fstr_out_866 != null)
                {
                    fstr_out_866.Close();
                }
            }
            return(Result);
        }
Esempio n. 18
0
        static int Main(string[] args)
        {
            int
                Result = -1;

            StreamWriter
                fstr_out = null;

            string
                tmpString = "log.log",
                TableName;

                        #if TEST_DB_BY_ODBC
            OdbcConnection
                odbc_conn = null;

            OdbcCommand
                odbc_cmd = null;

            OdbcDataReader
                odbc_rdr = null;

            OdbcDataAdapter
                odbc_da = null;
                        #endif

            OleDbConnection
                conn = null;

            OleDbCommand
                cmd = null;

            OleDbDataReader
                rdr = null;

            OleDbDataAdapter
                da = null;

            DataTable
                tmpDataTable;

            int
                tmpInt;

            object[]
            tmpObjects;

            FileStream
                fs;

            byte[]
            Blob;

            try
            {
                try
                {
                    fstr_out           = new StreamWriter(tmpString, false, System.Text.Encoding.GetEncoding(1251));
                    fstr_out.AutoFlush = true;

                    string
                        PathToDb               = "E:\\Soft.src\\CBuilder\\Tests\\Paradox\\Test.#1\\db",
                        CommonDbTableName      = "Common",
                        CommonDbTableSQLCreate = @"
create table " + CommonDbTableName + @"(
FInt integer,
FChar char(254)
)";

                                        #if TEST_DB_BY_ODBC
                    if (!PathToDb.EndsWith(Path.DirectorySeparatorChar.ToString()))
                    {
                        PathToDb += Path.DirectorySeparatorChar;
                    }

                    tmpString = "Driver={Microsoft Paradox Driver (*.db )};DriverID=538;Fil=Paradox 5.X;DefaultDir=" + PathToDb + ";Dbq=" + PathToDb + ";CollatingSequence=ASCII";
                    odbc_conn = new OdbcConnection(tmpString);
                    odbc_conn.Open();
                    fstr_out.WriteLine("ConnectionString: " + odbc_conn.ConnectionString);
                    fstr_out.WriteLine("ConnectionTimeout: " + odbc_conn.ConnectionTimeout.ToString());
                    fstr_out.WriteLine("Database: " + odbc_conn.Database);
                    fstr_out.WriteLine("DataSource: " + odbc_conn.DataSource);
                    fstr_out.WriteLine("Driver: " + odbc_conn.Driver);
                    fstr_out.WriteLine("ServerVersion: " + odbc_conn.ServerVersion);
                    fstr_out.WriteLine("State: " + odbc_conn.State.ToString());
                    fstr_out.WriteLine();

                    tmpString = PathToDb + CommonDbTableName + ".db";
                    if (File.Exists(tmpString))
                    {
                        File.Delete(tmpString);
                    }

                    odbc_cmd             = odbc_conn.CreateCommand();
                    odbc_cmd.CommandType = CommandType.Text;
                    odbc_cmd.CommandText = CommonDbTableSQLCreate;
                    odbc_cmd.ExecuteNonQuery();

                    odbc_cmd.CommandText = "insert into " + CommonDbTableName + " values (1,'FChar (‘„ар)')";
                    odbc_cmd.ExecuteNonQuery();

                                                #if TEST_BLOB
                    if (odbc_cmd == null)
                    {
                        odbc_cmd = odbc_conn.CreateCommand();
                    }
                    odbc_cmd.CommandType = CommandType.Text;

                    odbc_cmd.CommandText = "select * from TestTypes";
                    odbc_cmd.Parameters.Clear();
                    odbc_rdr = odbc_cmd.ExecuteReader();

                    do
                    {
                        if (odbc_rdr.HasRows)
                        {
                            for (int i = 0; i < odbc_rdr.FieldCount; ++i)
                            {
                                fstr_out.WriteLine(odbc_rdr.GetName(i) + " GetDataTypeName(): \"" + odbc_rdr.GetDataTypeName(i) + "\" GetFieldType(): \"" + odbc_rdr.GetFieldType(i) + "\"");
                            }

                            tmpInt = odbc_rdr.GetOrdinal("FGraphic");

                            while (odbc_rdr.Read())
                            {
                                tmpString = "FromBlob.bmp";
                                if (File.Exists(tmpString))
                                {
                                    File.Delete(tmpString);
                                }

                                Blob = (byte[])odbc_rdr["FGraphic"];
                                fs   = new FileStream(tmpString, FileMode.Create);
                                fs.Write(Blob, 0, Blob.Length);
                                fs.Close();

                                tmpString = "FromBlob_1.bmp";
                                if (File.Exists(tmpString))
                                {
                                    File.Delete(tmpString);
                                }

                                Blob = new byte[odbc_rdr.GetBytes(tmpInt, 0, null, 0, int.MaxValue)];
                                rdr.GetBytes(tmpInt, 0, Blob, 0, Blob.Length);
                                fs = new FileStream(tmpString, FileMode.Create);
                                fs.Write(Blob, 0, Blob.Length);
                                fs.Close();
                            }
                        }
                    }while(rdr.NextResult());
                    odbc_rdr.Close();
                                                #endif

                    odbc_conn.Close();
                                        #endif

                    if (PathToDb.EndsWith(Path.DirectorySeparatorChar.ToString()))
                    {
                        PathToDb = PathToDb.Remove(PathToDb.Length - 1, 1);
                    }

                    tmpString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + PathToDb + ";Extended Properties=Paradox 5.x";
                    conn      = new OleDbConnection(tmpString);
                    conn.Open();
                    fstr_out.WriteLine("ConnectionString: " + conn.ConnectionString);
                    fstr_out.WriteLine("ConnectionTimeout: " + conn.ConnectionTimeout.ToString());
                    fstr_out.WriteLine("Database: " + conn.Database);
                    fstr_out.WriteLine("DataSource: " + conn.DataSource);
                    fstr_out.WriteLine("Provider: " + conn.Provider);
                    fstr_out.WriteLine("ServerVersion: " + conn.ServerVersion);
                    fstr_out.WriteLine("State: " + conn.State.ToString());
                    fstr_out.WriteLine();

                    tmpString = PathToDb + Path.DirectorySeparatorChar + CommonDbTableName + ".db";
                    if (File.Exists(tmpString))
                    {
                        File.Delete(tmpString);
                    }

                    cmd             = conn.CreateCommand();
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = CommonDbTableSQLCreate;
                    cmd.ExecuteNonQuery();

                    cmd.CommandText = "insert into " + CommonDbTableName + " values (1,'FChar (‘„ар)')";
                    cmd.ExecuteNonQuery();

                                        #if TEST_BLOB
                    if (cmd == null)
                    {
                        cmd = conn.CreateCommand();
                    }
                    cmd.CommandType = CommandType.Text;

                    TableName  = "TestTypes";
                    tmpObjects = new object[] { null, null, TableName, null };

                    fstr_out.WriteLine("OleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns)");
                    tmpDataTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, tmpObjects);
                    fstr_out.WriteLine("Columns in " + TableName + " table:");
                    foreach (DataRow row in tmpDataTable.Rows)
                    {
                        fstr_out.WriteLine("\t" + row["TABLE_CATALOG"] + " " + row["TABLE_NAME"] + " " + row["COLUMN_NAME"].ToString() + " " + row["DATA_TYPE"] + " " + row["TABLE_SCHEMA"]);
                    }
                    fstr_out.WriteLine();

                                                #if TEST_BLOB_SAVE
                    cmd.CommandText = "update TestTypes set FGraphic = ?";
                    cmd.Parameters.Clear();
                    cmd.Parameters.Add("FGraphic", OleDbType.LongVarBinary);
                    fs   = new FileStream("welcome.bmp", FileMode.Open, FileAccess.Read);
                    Blob = new byte[fs.Length];
                    fs.Read(Blob, 0, Blob.Length);
                    cmd.Parameters["FGraphic"].Value = Blob;
                    tmpInt = cmd.ExecuteNonQuery();
                                                #endif

                    cmd.CommandText = "select * from TestTypes";
                    cmd.Parameters.Clear();
                    rdr = cmd.ExecuteReader();

                    do
                    {
                        if (rdr.HasRows)
                        {
                            for (int i = 0; i < rdr.FieldCount; ++i)
                            {
                                fstr_out.WriteLine(rdr.GetName(i) + " GetDataTypeName(): \"" + rdr.GetDataTypeName(i) + "\" GetFieldType(): \"" + rdr.GetFieldType(i) + "\"");
                            }

                            tmpInt = rdr.GetOrdinal("FGraphic");

                            while (rdr.Read())
                            {
                                tmpString = "FromBlob.bmp";
                                if (File.Exists(tmpString))
                                {
                                    File.Delete(tmpString);
                                }

                                Blob = (byte[])rdr["FGraphic"];
                                fs   = new FileStream(tmpString, FileMode.Create);
                                fs.Write(Blob, 0, Blob.Length);
                                fs.Close();

                                tmpString = "FromBlob_1.bmp";
                                if (File.Exists(tmpString))
                                {
                                    File.Delete(tmpString);
                                }

                                Blob = new byte[rdr.GetBytes(tmpInt, 0, null, 0, int.MaxValue)];
                                rdr.GetBytes(tmpInt, 0, Blob, 0, Blob.Length);
                                fs = new FileStream(tmpString, FileMode.Create);
                                fs.Write(Blob, 0, Blob.Length);
                                fs.Close();
                            }
                        }
                    }while(rdr.NextResult());
                    rdr.Close();
                                        #endif

                    Result = 0;
                }
                catch (Exception eException)
                {
                    Console.WriteLine(eException.GetType().FullName + Environment.NewLine + "Message: " + eException.Message + Environment.NewLine + "StackTrace:" + Environment.NewLine + eException.StackTrace);
                }
            }
            finally
            {
                                #if TEST_DB_BY_ODBC
                if (odbc_rdr != null && !odbc_rdr.IsClosed)
                {
                    odbc_rdr.Close();
                }

                if (odbc_conn != null && odbc_conn.State == System.Data.ConnectionState.Open)
                {
                    odbc_conn.Close();
                }
                                #endif

                if (rdr != null && !rdr.IsClosed)
                {
                    rdr.Close();
                }

                if (conn != null && conn.State == System.Data.ConnectionState.Open)
                {
                    conn.Close();
                }

                if (fstr_out != null)
                {
                    fstr_out.Close();
                }
            }

            return(Result);
        }
Esempio n. 19
0
        public static int Main(string[] args)
        {
            int
                Result = -1;

            StreamWriter
                fstr_out = null;

            string
                tmpString = "log.log";

            OleDbConnection
                conn = null;

            OleDbCommand
                cmd = null;

            OleDbDataReader
                rdr = null;

            try
            {
                try
                {
                    fstr_out           = new StreamWriter(tmpString, false, System.Text.Encoding.GetEncoding(1251));
                    fstr_out.AutoFlush = true;

                    //tmpString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\Мои документы\\Jsic Veksel\\T4.mdb;Jet OLEDB:Database Password=3944";
                    tmpString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\Soft.src\\CBuilder\\Tests\\Access\\TestAccess.mdb;User Id=admin;Password=;";
                    conn      = new OleDbConnection(tmpString);
                    conn.Open();
                    fstr_out.WriteLine("ConnectionString: " + conn.ConnectionString);
                    fstr_out.WriteLine("ConnectionTimeout: " + conn.ConnectionTimeout.ToString());
                    fstr_out.WriteLine("Database: " + conn.Database);
                    fstr_out.WriteLine("DataSource: " + conn.DataSource);
                    fstr_out.WriteLine("Provider: " + conn.Provider);
                    fstr_out.WriteLine("ServerVersion: " + conn.ServerVersion);
                    fstr_out.WriteLine("State: " + conn.State.ToString());
                    fstr_out.WriteLine();

                    if (cmd == null)
                    {
                        cmd = conn.CreateCommand();
                    }

                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = "select sum(Mark) as SumSum from Examinations where Id=9";

                    fstr_out.WriteLine("OleDbCommand.ExecuteReader(CommandBehavior.SchemaOnly)");
                    rdr = cmd.ExecuteReader(CommandBehavior.SchemaOnly);
                    fstr_out.WriteLine("OleDbDataReader.HasRows=" + rdr.HasRows.ToString());
                    for (int i = 0; i < rdr.FieldCount; ++i)
                    {
                        fstr_out.WriteLine(rdr.GetName(i) + " " + rdr.GetDataTypeName(i) + " " + rdr.GetFieldType(i));
                    }
                    fstr_out.WriteLine();
                    rdr.Close();

                    rdr = cmd.ExecuteReader();
                    rdr.Close();

                    cmd.CommandText = "select ?=sum(Mark) from Examinations where Id=9";
                    cmd.Parameters.Add("SumSum", OleDbType.Double);
                    cmd.Parameters["SumSum"].Direction = ParameterDirection.Output;

                    rdr = cmd.ExecuteReader();
                    rdr.Close();

                    conn.Close();

                    Result = 0;
                }
                catch (Exception eException)
                {
                    fstr_out.WriteLine(eException.GetType().FullName + Environment.NewLine + "Message: " + eException.Message + Environment.NewLine + "StackTrace:" + Environment.NewLine + eException.StackTrace);
                }
            }
            finally
            {
                if (rdr != null && !rdr.IsClosed)
                {
                    rdr.Close();
                }

                if (conn != null && conn.State == System.Data.ConnectionState.Open)
                {
                    conn.Close();
                }

                if (fstr_out != null)
                {
                    fstr_out.Close();
                }
            }
            return(Result);
        }