示例#1
0
        /// <summary>
        /// Test DateTime types
        /// </summary>
        private static void Test_DateTime_Types()
        {
            using (CUBRIDConnection conn = new CUBRIDConnection())
            {
                conn.ConnectionString = TestCases.connString;
                conn.Open();

                CleanupTestTable(conn);
                TestCases.ExecuteSQL("create table t(dt datetime)", conn);

                TestCases.ExecuteSQL("insert into t values('10/31/2008 10:20:30.040')", conn);

                using (CUBRIDCommand cmd = new CUBRIDCommand("select * from t", conn))
                {
                    CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader();

                    reader.Read();
                    Debug.Assert(reader.GetDateTime(0) == new DateTime(2008, 10, 31, 10, 20, 30, 040));
                    Debug.Assert(reader.GetDate(0) == "2008-10-31");
                    Debug.Assert(reader.GetDate(0, "yy/MM/dd") == "08/10/31");
                    Debug.Assert(reader.GetTime(0) == "10:20:30");
                    Debug.Assert(reader.GetTime(0, "HH") == "10");
                    Debug.Assert(reader.GetTimestamp(0) == "2008-10-31 10:20:30.040");
                    Debug.Assert(reader.GetTimestamp(0, "yyyy HH") == "2008 10");
                }

                CleanupTestTable(conn);
            }
        }
示例#2
0
            public void CUBRIDSchemaProviderConstructorTest()
            {
                CUBRIDConnection connection = new CUBRIDConnection();;  // TODO: Initialize to an appropriate value

                connection.ConnectionString = DBHelper.connString;
                connection.Open();
                CUBRIDSchemaProvider target = new CUBRIDSchemaProvider(connection);


                CUBRIDCommand cmd = new CUBRIDCommand();

                cmd.Connection  = connection;
                cmd.CommandText = "select * from nation order by code asc";


                CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader();

                reader.Read();
                Assert.AreEqual(4, reader.FieldCount);


                cmd.Close();
                reader.Close();
                connection.Close();
            }
示例#3
0
        public void CUBRIDCommand_ExecuteReader_Test()
        {
            using (CUBRIDConnection conn = new CUBRIDConnection())
            {
                conn.ConnectionString = DBHelper.connString;
                conn.Open();

                string sql = "select * from nation order by code asc";
                using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
                {
                    using (CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader())
                    {
                        //verify the first two results
                        reader.Read();
                        Assert.AreEqual(4, reader.FieldCount);
                        Assert.AreEqual("AFG", reader.GetString(0));
                        Assert.AreEqual("Afghanistan", reader.GetString(1));
                        Assert.AreEqual("Asia", reader.GetString(2));
                        Assert.AreEqual("Kabul", reader.GetString(3));

                        reader.Read();
                        Assert.AreEqual(4, reader.FieldCount);
                        Assert.AreEqual("AHO", reader.GetString(0));
                        Assert.AreEqual("Netherlands Antilles", reader.GetString(1));
                        Assert.AreEqual("Americas", reader.GetString(2));
                        Assert.AreEqual("Willemstad", reader.GetString(3));
                    }
                }
            }
        }
示例#4
0
        public void i18n_issue()
        {
            CUBRIDConnection conn = new CUBRIDConnection();

            conn.ConnectionString = "server=test-db-server;database=demodb;port=33000;user=dba;password="******"utf-8");

            cmd.CommandText = "drop table if exists 测试表;";
            cmd.ExecuteNonQuery();

            cmd.CommandText = "create table 测试表 (名称 varchar);";
            cmd.ExecuteNonQuery();

            cmd.CommandText = "insert into 测试表 value('小明');";
            cmd.ExecuteNonQuery();

            cmd.CommandText = "select 名称 from 测试表;";
            CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader();

            while (reader.Read())
            {
                Console.WriteLine(reader.GetString(0));
            }
            ;

            conn.Close();
        }
示例#5
0
        public void DataReader_MultiQuery_Test2()
        {
            string           conn_string = "server=test-db-server;database=demodb;port=33000;user=dba;password="******"select s_name from code where s_name='X'; select name from nation where name='Algeria';";
            CUBRIDCommand cmd = new CUBRIDCommand(sql, conn);

            CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader();

            while (reader.Read())
            {
                Console.WriteLine(reader.GetString(0));
            }
            ;

            while (reader.NextResult())
            {
                Console.WriteLine("=============================");

                while (reader.Read())
                {
                    Console.WriteLine(reader.GetString(0));
                }
                ;
            }

            conn.Close();
        }
示例#6
0
        public void CUBRIDCommand_Constructor_SQLAndConnAndTran_Test()
        {
            CUBRIDConnection conn = new CUBRIDConnection();

            conn.ConnectionString = DBHelper.connString;
            conn.Open();
            conn.SetAutoCommit(false);

            string            sql         = "drop table if exists t";
            CUBRIDTransaction transaction = new CUBRIDTransaction(conn, CUBRIDIsolationLevel.TRAN_DEFAULT_ISOLATION);
            CUBRIDCommand     cmd         = new CUBRIDCommand(sql, conn, transaction);

            conn.BeginTransaction();
            cmd.ExecuteNonQuery();
            cmd.CommandText = "create table t (id int, name varchar(50))";
            cmd.ExecuteNonQuery();
            cmd.CommandText = "insert into t values(1, 'Nancy')";
            cmd.ExecuteNonQuery();
            conn.Commit();

            cmd.CommandText = "select * from t";
            CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader();

            reader.Read();
            Assert.AreEqual(2, reader.FieldCount);
            Assert.AreEqual("1", reader.GetString(0));
            Assert.AreEqual("Nancy", reader.GetString(1));

            cmd.Close();
            reader.Close();
            conn.Close();
        }
示例#7
0
        public void CUBRIDCommand_Constructor_SQL_Test()
        {
            CUBRIDConnection conn = new CUBRIDConnection();

            conn.ConnectionString = DBHelper.connString;

            string        sql = "select * from nation order by code asc";
            CUBRIDCommand cmd = new CUBRIDCommand(sql);

            cmd.Connection = conn;

            conn.Open();
            CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader();

            reader.Read();
            Assert.AreEqual(4, reader.FieldCount);
            Assert.AreEqual("AFG", reader.GetString(0));
            Assert.AreEqual("Afghanistan", reader.GetString(1));
            Assert.AreEqual("Asia", reader.GetString(2));
            Assert.AreEqual("Kabul", reader.GetString(3));

            cmd.Close();
            reader.Close();
            conn.Close();
        }
        public void DataReader_Basic_Test()
        {
            using (CUBRIDConnection conn = new CUBRIDConnection())
            {
                conn.ConnectionString = DBHelper.connString;
                conn.Open();

                String sql = "select * from nation order by `code` asc";

                LogTestStep("retrieve just one row");
                using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
                {
                    using (CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader())
                    {
                        reader.Read(); //retrieve just one row

                        Assert.AreEqual(4, reader.FieldCount);
                        Assert.AreEqual("AFG", reader.GetString(0));
                        Assert.AreEqual("Afghanistan", reader.GetString(1));
                        Assert.AreEqual("Asia", reader.GetString(2));
                        Assert.AreEqual("Kabul", reader.GetString(3));

                        LogStepPass();
                    }
                }
            }

            LogTestResult();
        }
示例#9
0
        public void CUBRIDCommand_Close_Test()
        {
            using (CUBRIDConnection conn = new CUBRIDConnection())
            {
                conn.ConnectionString = DBHelper.connString;

                string        sql = "select * from nation order by code asc";
                CUBRIDCommand cmd = new CUBRIDCommand(sql, conn);

                conn.Open();
                CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader();
                reader.Read();
                Assert.AreEqual(4, reader.FieldCount);
                Assert.AreEqual("AFG", reader.GetString(0));
                Assert.AreEqual("Afghanistan", reader.GetString(1));
                Assert.AreEqual("Asia", reader.GetString(2));
                Assert.AreEqual("Kabul", reader.GetString(3));

                cmd.Close();

                try
                {
                    cmd.CommandText = "drop table if exists t";
                    cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    Assert.AreEqual("Some message about the cmd cannot be used", ex.Message);
                }
            }
        }
        public void DataReader_GetDate_Test()
        {
            using (CUBRIDConnection conn = new CUBRIDConnection())
            {
                conn.ConnectionString = DBHelper.connString;
                conn.Open();

                DBHelper.ExecuteSQL("drop table if exists t", conn);
                DBHelper.ExecuteSQL("create table t (timeTest time,datetimeTest datetime)", conn);
                DBHelper.ExecuteSQL("insert into t values('12:07:39', '2013-03-18 12:07:12')", conn);

                using (CUBRIDCommand cmd = new CUBRIDCommand("select * from t", conn))
                {
                    using (CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader())
                    {
                        reader.Read();
                        Assert.AreEqual(2, reader.FieldCount);
                        Assert.AreEqual("12:07:39", reader.GetTime(0));
                        Assert.AreEqual("2013-03-18", reader.GetDate(1));

                        DateTime dt = reader.GetDateTime(1);
                        Assert.AreEqual("2013-03-18 12:07:12", dt.ToString("yyyy-MM-dd HH:mm:ss"));
                    }
                }

                //revert test db
                DBHelper.ExecuteSQL("drop table if exists t", conn);
            }
        }
示例#11
0
        private static void Test_apis_669()
        {
            String sql = "select s_name from code where f_name = 'Woman';select * from code;";

            CUBRIDCommand cmd = new CUBRIDCommand(sql, conn);

            CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader();

            while (reader.Read())
            {
                Console.WriteLine(reader.GetString(0));
            }
            ;

            while (reader.NextResult())
            {
                Console.WriteLine("=============================");

                while (reader.Read())
                {
                    Console.WriteLine(reader.GetString(0));
                    //    Console.WriteLine(reader.GetString(1));
                }
                ;
            }
        }
        private static void TestParameterCollection()
        {
            string sql = "drop table if exists TestTable;";

            using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
            {
                cmd.ExecuteNonQuery();
            }

            sql = "CREATE TABLE TestTable (clsid BLOB);";
            using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
            {
                cmd.ExecuteNonQuery();
            }
            byte[] bytes = new byte[36] {
                55, 56, 50, 69, 55, 57, 67, 69, 45, 50, 70, 68, 68, 45, 52, 68, 50, 55, 45, 65, 51, 48, 48, 45, 69, 48, 56, 56, 70, 56, 68, 68, 55, 54, 66, 69
            };
            sql = "INSERT INTO TestTable VALUES(?);";
            using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
            {
                CUBRIDBlob Blob = new CUBRIDBlob(conn);
                Blob.SetBytes(1, bytes);
                CUBRIDParameter param = new CUBRIDParameter();
                param.ParameterName      = "?p";
                param.Value              = Blob; cmd.Parameters.Add(param);
                cmd.Parameters[0].DbType = DbType.Binary;

                try
                {
                    cmd.Parameters.Insert(0, param);
                }
                catch (Exception e)
                {
                    Debug.Assert(e.Message == "Parameter already added to the collection!");
                }
                try
                {
                    cmd.Parameters.Insert(0, null);
                }
                catch (Exception e)
                {
                    string es = e.ToString();
                    Debug.Assert(e.Message == "Only CUBRIDParameter objects are valid!");
                }
                cmd.ExecuteNonQuery();
            }
            using (CUBRIDCommand cmd = new CUBRIDCommand("Select * from TestTable", conn))
            {
                using (CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader())
                {
                    reader.Read(); byte[] buffer = new byte[36];
                    long          len            = reader.GetBytes(0, 0, buffer, 0, 36);
                    ASCIIEncoding encoding       = new ASCIIEncoding();
                    string        clsid          = encoding.GetString(buffer);
                    Debug.Assert(clsid == "782E79CE-2FDD-4D27-A300-E088F8DD76BE");
                }
            }
        }
示例#13
0
        public void CUBRIDCommand_ExecuteReader_CloseConnection_Test()
        {
            using (CUBRIDConnection conn = new CUBRIDConnection())
            {
                conn.ConnectionString = DBHelper.connString;
                conn.Open();

                string        sql = "select * from nation order by code asc";
                CUBRIDCommand cmd = new CUBRIDCommand(sql, conn);

                LogTestStep("Test CommandBehavior.CloseConnection");
                CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader(CommandBehavior.CloseConnection);

                //verify the first two results
                reader.Read();
                Assert.AreEqual(4, reader.FieldCount);
                Assert.AreEqual("AFG", reader.GetString(0));
                Assert.AreEqual("Afghanistan", reader.GetString(1));
                Assert.AreEqual("Asia", reader.GetString(2));
                Assert.AreEqual("Kabul", reader.GetString(3));

                reader.Read();
                Assert.AreEqual(4, reader.FieldCount);
                Assert.AreEqual("AHO", reader.GetString(0));
                Assert.AreEqual("Netherlands Antilles", reader.GetString(1));
                Assert.AreEqual("Americas", reader.GetString(2));
                Assert.AreEqual("Willemstad", reader.GetString(3));

                reader.Close();

                if (reader.IsClosed)
                {
                    try
                    {
                        cmd = new CUBRIDCommand("create table t(id int)", conn);
                        cmd.ExecuteNonQuery();
                        LogStepFail();
                    }
                    catch (Exception ex)
                    {
                        Assert.AreEqual("The connection is not open!", ex.Message);
                        LogStepPass();
                    }
                }
                else
                {
                    LogStepFail();
                }

                //TODO: Test CommandBehavior.Default, CommandBehavior.SchemaOnly, CommandBehavior.KeyInfo, CommandBehavior.SingleRow, CommandBehavior.SequentialAccess
                LogTestResult();
            }
        }
示例#14
0
        private static void Test_apis_514()
        {
            string           sql    = "select * from nation order by code asc";
            CUBRIDCommand    cmd    = new CUBRIDCommand(sql, conn);
            CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader(CommandBehavior.CloseConnection);

            Console.WriteLine(reader.IsClosed);
            Console.WriteLine(conn.State);

            reader.Close();

            Console.WriteLine(reader.IsClosed);
            Console.WriteLine(conn.State);
        }
        public void DataReader_GetNumericTypes_Test()
        {
            using (CUBRIDConnection conn = new CUBRIDConnection())
            {
                conn.ConnectionString = DBHelper.connString;
                conn.Open();

                DBHelper.ExecuteSQL("drop table if exists t", conn);
                DBHelper.ExecuteSQL("create table t(c0 short, c1 smallint, c2 integer, c3 int, c4 bigint, c5 numeric, c6 decimal, c7 float, c8 real, c9 double, c10 double precision, c11 monetary)", conn);
                DBHelper.ExecuteSQL("insert into t values(-10, 11, -32768, 32769, -2147483650, 2.5, -12.6, 33.5, -123.4567, 23.45, 45.678, 987.65)", conn);
                DBHelper.ExecuteSQL("insert into t values(-11, 12, -32769, 32770, -2147483651, 2.6, -12.7, 34.5, -223.4567, 33.45, 46.678, 989.65)", conn);

                String sql = "select * from t";

                LogTestStep("use exactly the same data type");
                using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
                {
                    using (CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader())
                    {
                        reader.Read(); //retrieve just one row

                        Assert.AreEqual(12, reader.FieldCount);
                        Assert.AreEqual(-10, reader.GetInt16(0));
                        Assert.AreEqual(11, reader.GetInt16(1));
                        Assert.AreEqual(-32768, reader.GetInt32(2));
                        Assert.AreEqual(32769, reader.GetInt32(3));
                        Assert.AreEqual(-2147483650, reader.GetInt64(4));
                        //Assert.AreEqual(2.5, reader.GetDecimal(5)); //Actual 3
                        //Assert.AreEqual(-12.6, reader.GetDecimal(6)); //Actual -13
                        Assert.AreEqual(33.5, reader.GetFloat(7));
                        if (Math.Abs(-123.4567 - reader.GetFloat(8)) > 0.00001)
                        {
                            Assert.Fail();
                        }

                        Assert.AreEqual(23.45, reader.GetDouble(9));
                        Assert.AreEqual(45.678, reader.GetDouble(10));
                        //TODO: ask whether there is GetMONETARY method
                        Assert.AreEqual(987.65, reader.GetDouble(11));

                        LogStepPass();
                    }
                }

                //TODO change the datatype
                //LogTestStep("use exactly the same data type");
            }

            LogTestResult();
        }
示例#16
0
        public void CUBRIDCommand_CreateParameter_Test()
        {
            CUBRIDConnection conn = new CUBRIDConnection();

            conn.ConnectionString = DBHelper.connString;
            conn.Open();

            DBHelper.ExecuteSQL("drop table if exists t", conn);
            DBHelper.ExecuteSQL("create table t (clsid bit(288))", conn);

            byte[] bytes = new byte[36] {
                55, 56, 50, 69, 55, 57, 67, 69,
                45, 50, 70, 68, 68, 45, 52, 68,
                50, 55, 45, 65, 51, 48, 48, 45,
                69, 48, 56, 56, 70, 56, 68, 68,
                55, 54, 66, 69
            };

            string sql = "INSERT INTO t VALUES (?);";

            CUBRIDCommand   cmd   = new CUBRIDCommand(sql, conn);
            CUBRIDParameter param = (CUBRIDParameter)cmd.CreateParameter();

            param.ParameterName = "?p";
            param.Value         = bytes;
            cmd.Parameters.Add(param);
            cmd.Parameters[0].CUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_BIT;
            cmd.ExecuteNonQuery();
            cmd.Close();

            sql = "select * from t";
            cmd = new CUBRIDCommand(sql, conn);
            CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader();

            reader.Read();
            byte[] buffer = (byte[])reader.GetValue(0);
            string clsid  = conn.GetEncoding().GetString(buffer);

            Assert.AreEqual(clsid, "782E79CE-2FDD-4D27-A300-E088F8DD76BE");
            reader.Close();
            cmd.Close();

            //Revert the test db
            DBHelper.ExecuteSQL("drop table if exists t", conn);
            conn.Close();
        }
示例#17
0
        /// <summary>
        /// Test CUBRIDCommand GetGeneratedKeys() method
        /// </summary>

        /*
         * private static void Test_GetGeneratedKeys()
         * {
         * string sqlTablesCount = "select count(*) from db_class";
         * int tablesCount, newTableCount;
         *
         * using (CUBRIDConnection conn = new CUBRIDConnection())
         * {
         *  conn.ConnectionString = TestCases.connString;
         *  conn.Open();
         *
         *  TestCases.ExecuteSQL("drop table if exists tkeys", conn);
         *
         *  tablesCount = (int)TestCases.GetSingleValue(sqlTablesCount, conn);
         *  TestCases.ExecuteSQL("create table tkeys(id int auto_increment, str string)", conn);
         *  newTableCount = (int)TestCases.GetSingleValue(sqlTablesCount, conn);
         *  //Verify table was created
         *  Debug.Assert(newTableCount == tablesCount + 1);
         *
         *  conn.BeginTransaction();
         *  CUBRIDCommand cmd = new CUBRIDCommand("insert into tkeys(str) values('xyz')", conn);
         *  cmd.ExecuteNonQuery();
         *  DbDataReader keys = cmd.GetGeneratedKeys();
         *
         *  while (keys.Read())
         *  {
         *    //only on erow will be returned
         *    Debug.Assert(keys.GetInt32(0) == 1);
         *  }
         *  conn.Commit();
         *  cmd.Close();
         *
         *  TestCases.ExecuteSQL("drop table if exists tkeys", conn);
         *  newTableCount = (int)TestCases.GetSingleValue(sqlTablesCount, conn);
         *  Debug.Assert(newTableCount == tablesCount);
         * }
         * }
         */
        /// <summary>
        /// Test ExecuteNonQuery() and ExecuteReader() methods
        /// </summary>
        private static void Test_ExecuteNonQuery_Query()
        {
            using (CUBRIDConnection conn = new CUBRIDConnection())
            {
                conn.ConnectionString = TestCases.connString;
                conn.Open();

                string sql = "select count(*) from nation";
                using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
                {
                    try
                    {
                        cmd.ExecuteNonQuery();
                    }
                    catch (CUBRIDException ex)
                    {
                        Debug.Assert(ex.Message == "Invalid query type!");
                    }
                }
            }

            using (CUBRIDConnection conn = new CUBRIDConnection())
            {
                conn.ConnectionString = TestCases.connString;
                conn.Open();

                string sql = "insert into nation values('x', 'x', 'x', 'x')";
                using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
                {
                    try
                    {
                        using (CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader())
                        {
                            reader.Read();
                        }
                    }
                    catch (CUBRIDException ex)
                    {
                        string r = "Operation would have caused one or more unique constraint violations.";
                        Debug.Assert(ex.Message.Substring(0, r.Length) == r);
                    }
                    ExecuteSQL("delete from nation where code ='x'", conn);
                }
            }
        }
示例#18
0
        private static void Test_Sequence_String()
        {
            ExecuteSQL("DROP TABLE IF EXISTS t", conn);

            //Create a new table with a collection
            ExecuteSQL("CREATE TABLE t(s SET(string))", conn);
            //Insert some data in the sequence column
            string[] sArray = new string[8] {
                "P",
                "Types of fragmentation",
                "File fragmentation",
                "Free space fragmentation",
                "File scattering",
                "File system fragmentation",
                "Preventing fragmentation", null
            };
            string sql = "INSERT INTO t(s) VALUES( ?);";

            using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
            {
                CUBRIDParameter param = new CUBRIDParameter();
                param.ParameterName       = "?p";
                param.Value               = sArray;
                param.InnerCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_STRING;
                cmd.Parameters.Add(param);
                cmd.Parameters[0].CUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_SET;
                cmd.ExecuteNonQuery();
            }

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

                    object objValue = reader.GetValue(0);
                    Array  oArray   = objValue as Array;
                    if (oArray != null)
                    {
                        Console.WriteLine(oArray.Length);
                    }
                    cmd.ColumnInfos[0].ToString();
                }
            }
        }
示例#19
0
        /// <summary>
        /// Test CUBRIDDataReader GetOid() method
        /// </summary>
        private static void Test_OID_Get()
        {
            using (CUBRIDConnection conn = new CUBRIDConnection())
            {
                conn.ConnectionString = TestCases.connString;
                conn.Open();

                string sql = "select * from nation limit 1";
                using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
                {
                    using (CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader())
                    {
                        reader.Read();
                        CUBRIDOid oid = reader.GetOid();
                        Debug.Assert(oid.ToString() == "OID:@0|0|0");
                    }
                }
            }
        }
示例#20
0
        private static void Test_Sequence_Object()
        {
            ExecuteSQL("DROP TABLE IF EXISTS t", conn);

            //Create a new table with a collection
            ExecuteSQL("CREATE TABLE t(s SET(object))", conn);
            //Insert some data in the sequence column
            object[] sArray = new object[1] {
                null
            };
            string sql = "INSERT INTO t(s) VALUES( ?);";

            using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
            {
                CUBRIDParameter param = new CUBRIDParameter();
                param.ParameterName       = "?p";
                param.Value               = sArray;
                param.InnerCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_OBJECT;
                cmd.Parameters.Add(param);
                cmd.Parameters[0].CUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_SET;
                cmd.ExecuteNonQuery();
            }

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

                    object objValue = reader.GetValue(0);
                    Array  oArray   = objValue as Array;
                    if (oArray != null)
                    {
                        Console.WriteLine(oArray.Length);
                    }
                }
            }
        }
示例#21
0
        /// <summary>
        /// Test CUBRIDDataReader getter methods
        /// </summary>
        private static void Test_DataReader_Getxxx()
        {
            using (CUBRIDConnection conn = new CUBRIDConnection())
            {
                conn.ConnectionString = TestCases.connString;
                conn.Open();

                string sql = "select * from nation;";
                using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
                {
                    using (CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader())
                    {
                        reader.Read();

                        Debug.Assert(reader.GetOrdinal("code") == 0);
                        Debug.Assert(reader.GetName(0) == "code");
                        Debug.Assert(reader.GetColumnName(0) == "code");
                        Debug.Assert(reader.GetColumnType(0) == typeof(System.String));
                        Debug.Assert(reader.GetDataTypeName(0) == "CHAR");
                    }
                }
            }
        }
示例#22
0
        public void DataReader_NextResult_Test()
        {
            string           conn_string = "server=test-db-server;database=demodb;port=33000;user=dba;password="******"select * from nation;";
            CUBRIDCommand cmd = new CUBRIDCommand(sql, conn);

            CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader();

            reader.Read();
            Console.WriteLine(reader.GetString(0));

            if (reader.NextResult())
            {
                reader.Read();
                Console.WriteLine(reader.GetString(0));
            }

            conn.Close();
        }
        private static void TestGetBytes()
        {
            string sql = "drop table if exists TestTable;";

            using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
            {
                cmd.ExecuteNonQuery();
            }

            sql = "CREATE TABLE TestTable (clsid BLOB);";
            using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
            {
                CUBRIDDataAdapter ad1 = new CUBRIDDataAdapter(cmd);
                CUBRIDDataAdapter ad2 = new CUBRIDDataAdapter("Select * from TestTable", connString);
                cmd.ExecuteNonQuery();
            }
            byte[] bytes = new byte[36] {
                55, 56, 50, 69, 55, 57, 67, 69, 45, 50, 70, 68, 68, 45, 52, 68, 50, 55, 45, 65, 51, 48, 48, 45, 69, 48, 56, 56, 70, 56, 68, 68, 55, 54, 66, 69
            };
            sql = "INSERT INTO TestTable VALUES(?);";
            using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
            {
                CUBRIDBlob Blob = new CUBRIDBlob(conn);
                Blob.SetBytes(1, bytes);
                CUBRIDParameter param = new CUBRIDParameter();
                param.ParameterName      = "?p";
                param.Value              = Blob; cmd.Parameters.Add(param);
                cmd.Parameters[0].DbType = DbType.Binary;
                cmd.ExecuteNonQuery();
            }
            using (CUBRIDCommand cmd = new CUBRIDCommand("Select * from TestTable", conn))
            {
                using (CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader())
                {
                    reader.Read(); byte[] buffer = new byte[36];
                    long          len            = reader.GetBytes(0, 0, buffer, 0, 36);
                    ASCIIEncoding encoding       = new ASCIIEncoding();
                    string        clsid          = encoding.GetString(buffer);
                    Debug.Assert(clsid == "782E79CE-2FDD-4D27-A300-E088F8DD76BE");
                }
            }


            sql = "drop table if exists TestTable;";
            using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
            {
                cmd.ExecuteNonQuery();
            }

            sql = "CREATE TABLE TestTable (clsid CLOB);";
            using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
            {
                cmd.ExecuteNonQuery();
            }
            sql = "INSERT INTO TestTable VALUES('1234567890');";
            using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
            {
                cmd.ExecuteNonQuery();
            }
            using (CUBRIDCommand cmd = new CUBRIDCommand("Select * from TestTable", conn))
            {
                using (CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader())
                {
                    reader.Read();
                    byte[] buffer = new byte[36];
                    long   len    = reader.GetBytes(0, 0, buffer, 0, 8);

                    try
                    {
                        len = reader.GetBytes(0, 0, buffer, 0, 36);
                    }
                    catch (Exception e)
                    {
                    }
                }
            }
        }
        private static void TestGetData()
        {
            using (CUBRIDConnection conn = new CUBRIDConnection())
            {
                conn.ConnectionString = TestCases.connString;
                conn.Open();

                ExecuteSQL("drop table if exists t", conn);

                string sql = "create table t(";
                sql += "c_integer_ai integer AUTO_INCREMENT, ";
                sql += "c_smallint smallint, ";
                sql += "c_integer integer, ";
                sql += "c_bigint bigint, ";
                sql += "c_numeric numeric(15,1), ";
                sql += "c_float float, ";
                sql += "c_decimal decimal(15,3), ";
                sql += "c_double double, ";
                sql += "c_char char(1), ";
                sql += "c_varchar character varying(4096), ";
                sql += "c_time time, ";
                sql += "c_date date, ";
                sql += "c_timestamp timestamp, ";
                sql += "c_datetime datetime, ";
                sql += "c_bit bit(32), ";
                sql += "c_varbit bit varying(4096), ";
                sql += "c_monetary monetary, ";
                sql += "c_string string";
                sql += ")";
                ExecuteSQL(sql, conn);

                sql  = "insert into t values(";
                sql += "1, ";
                sql += "11, ";
                sql += "111, ";
                sql += "1111, ";
                sql += "1.1, ";
                sql += "1.11, ";
                sql += "1.111, ";
                sql += "1.1111, ";
                sql += "'a', ";
                sql += "'abcdfghijk', ";
                sql += "TIME '13:15:45 pm', ";
                sql += "DATE '00-10-31', ";
                sql += "TIMESTAMP '13:15:45 10/31/2008', ";
                sql += "DATETIME '13:15:45 10/31/2008', ";
                sql += "B'0110011110101001', ";
                sql += "B'010110110111110000', ";
                sql += "123456789, ";
                sql += "'qwerty'";
                sql += ")";
                ExecuteSQL(sql, conn);

                sql = "select * from t";
                using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
                {
                    CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader();
                    Thread.CurrentThread.CurrentCulture   = CultureInfo.CreateSpecificCulture("en-US");
                    Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
                    while (reader.Read()) //only one row will be available
                    {
                        int Ordinal = reader.GetOrdinal("c_integer_ai");
                        Debug.Assert(Ordinal == 0);

                        try
                        {
                            Guid guid = reader.GetGuid(0);
                        }
                        catch (Exception e)
                        {
                            string error = e.ToString();
                            Debug.Assert(e.Message == "Value does not fall within the expected range.");
                        }

                        try
                        {
                            Guid guid = reader.GetGuid(9);
                        }
                        catch (Exception e)
                        {
                            string error = e.ToString();
                            Debug.Assert(e.Message == "Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).");
                        }

                        int  i = reader.GetInt32(0);
                        Type t = reader.GetColumnType(0);
                        Debug.Assert(i == 1);

                        short s = reader.GetInt16(1);
                        t = reader.GetColumnType(1);
                        Debug.Assert(s == 11);

                        i = reader.GetInt32(2);
                        t = reader.GetColumnType(2);
                        Debug.Assert(i == 111);

                        long i64 = reader.GetInt64(3);
                        t = reader.GetColumnType(3);
                        Debug.Assert(i64 == 1111);

                        decimal d = reader.GetDecimal(4);
                        t = reader.GetColumnType(4);
                        Debug.Assert(d == (decimal)1.1);

                        float f = reader.GetFloat(5);
                        t = reader.GetColumnType(5);
                        Debug.Assert(f == (float)1.11);

                        d = reader.GetDecimal(6);
                        t = reader.GetColumnType(6);
                        Debug.Assert(d == (decimal)1.111);

                        double db = reader.GetDouble(7);
                        t = reader.GetColumnType(7);
                        Debug.Assert(db == (double)1.1111);

                        char c = reader.GetChar(8);
                        t = reader.GetColumnType(8);
                        Debug.Assert(c == 'a');

                        string str = reader.GetString(9);
                        t = reader.GetColumnType(9);
                        Debug.Assert(str == "abcdfghijk");

                        DateTime dt = reader.GetDateTime(10);
                        t = reader.GetColumnType(10);
                        Debug.Assert(dt.Second == 45);

                        dt = reader.GetDateTime(11);
                        t  = reader.GetColumnType(11);
                        string dt_s = reader.GetDate(11);
                        Debug.Assert(dt == new DateTime(2000, 10, 31));

                        dt   = reader.GetDateTime(12);
                        t    = reader.GetColumnType(12);
                        dt_s = reader.GetDate(12, "yyyy-MM-dd");
                        dt_s = reader.GetTimestamp(12);
                        dt_s = reader.GetTimestamp(12, "yyyy-MM-dd HH:mm:ss.fff");
                        Debug.Assert(dt == new DateTime(2008, 10, 31, 13, 15, 45));

                        dt   = reader.GetDateTime(13);
                        t    = reader.GetColumnType(13);
                        dt_s = reader.GetTime(13);
                        dt_s = reader.GetTime(13, "HH:mm:ss");

                        Debug.Assert(dt == new DateTime(2008, 10, 31, 13, 15, 45));

                        byte[] by       = new byte[4];
                        byte[] expected = { 0x67, 0xa9, 0x00, 0x00 };
                        reader.GetBytes(14, 0, by, 0, 4);
                        Debug.Assert(by.SequenceEqual(expected));
                        t = reader.GetColumnType(14);

                        expected[0] = 0x5b; expected[1] = 0x7c; expected[2] = 0x00;
                        reader.GetBytes(15, 0, by, 0, 3);
                        Debug.Assert(by.SequenceEqual(expected));
                        t = reader.GetColumnType(15);

                        Debug.Assert(reader.GetString(16) == "123456789.0000000000000000");
                        t = reader.GetColumnType(16);
                        char[] buffer = new char[16];
                        reader.GetChars(16, 0, buffer, 0, 16);
                        Debug.Assert(reader.GetString(17) == "qwerty");
                        t = reader.GetColumnType(17);
                    }
                }

                ExecuteSQL("drop table t", conn);
            }
        }
        public void DataReader_GetChars_Test()
        {
            //TODO test date time
            using (CUBRIDConnection conn = new CUBRIDConnection())
            {
                Thread.CurrentThread.CurrentCulture   = new CultureInfo("en-US");
                Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

                conn.ConnectionString = DBHelper.connString;
                conn.Open();

                DBHelper.ExecuteSQL("drop table if exists t", conn);
                DBHelper.ExecuteSQL("create table t (c varchar(100))", conn);
                DBHelper.ExecuteSQL("insert into t values ('abcdefghijklmn')", conn);
                DBHelper.ExecuteSQL("insert into t values ('opq')", conn);

                long   result      = 0;
                char[] resultArray = { '1', '2', '3', '4', '5', '6', '7', '8', '9' };

                string sql = "select * from t order by c";
                using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
                {
                    using (CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader())
                    {
                        reader.Read();
                        result = reader.GetChars(0, 2, resultArray, 3, 4);
                        char[] expected = { '1', '2', '3', 'c', 'd', 'e', 'f', '8', '9' };

                        Assert.AreEqual(4, result);
                        for (int i = 0; i < resultArray.Length; i++)
                        {
                            Assert.AreEqual(expected[i], resultArray[i]);
                        }

                        try
                        {
                            result = reader.GetChars(1, 2, resultArray, 3, 4);
                        }
                        catch (IndexOutOfRangeException ex)
                        {
                            Assert.AreEqual("Index was outside the bounds of the array.", ex.Message);
                        }

                        try
                        {
                            result = reader.GetChars(0, 20, resultArray, 3, 4);
                        }
                        catch (IndexOutOfRangeException ex)
                        {
                            Assert.AreEqual("Data offset must be a valid position in the field!", ex.Message);
                        }

                        try
                        {
                            result = reader.GetChars(0, 2, resultArray, 10, 4);
                        }
                        catch (IndexOutOfRangeException ex)
                        {
                            Assert.AreEqual("Buffer index must be a valid index in buffer!", ex.Message);
                        }

                        try
                        {
                            result = reader.GetChars(0, 2, resultArray, 3, 9);
                        }
                        catch (ArgumentException ex)
                        {
                            Assert.AreEqual("Buffer is not large enough to hold the requested data!", ex.Message);
                        }


                        resultArray = new char[] { '1', '2', '3', '4', '5', '6', '7', '8', '9' };
                        // read opq
                        reader.Read();

                        try
                        {
                            result = reader.GetChars(0, 1, resultArray, 2, 4);
                        }
                        catch (ArgumentOutOfRangeException ex)
                        {
                            Assert.AreEqual(@"Index and count must refer to a location within the string.
Parameter name: sourceIndex", ex.Message);
                        }
                    }
                }

                //revert test db
                DBHelper.ExecuteSQL("drop table if exists t", conn);
            }
        }
        public void DataType_MultiSet_Test()
        {
            using (CUBRIDConnection conn = new CUBRIDConnection())
            {
                conn.ConnectionString = DBHelper.connString;
                conn.Open();

                DBHelper.ExecuteSQL("drop table if exists testtable", conn);

                DBHelper.ExecuteSQL("CREATE TABLE testtable(clsid multiset_of(INTEGER));", conn);

                using (CUBRIDCommand cmd = new CUBRIDCommand("Select * from TestTable", conn))
                {
                    using (CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader())
                    {
                        reader.Read();

                        Assert.AreEqual(reader.HasRows, false);
                        Assert.AreEqual(reader.GetColumnType(0), typeof(Object[]));
                        Assert.AreEqual(reader.GetColumnTypeName(0), "MULTISET");

                        try
                        {
                            reader.GetColumnName(-1);
                        }
                        catch (Exception ex)
                        {
                            Assert.IsTrue((ex as IndexOutOfRangeException) != null);
                        }

                        try
                        {
                            reader.GetColumnTypeName(-1);
                        }
                        catch (Exception ex)
                        {
                            Assert.IsTrue((ex as IndexOutOfRangeException) != null);
                        }

                        try
                        {
                            reader.GetColumnTypeName(2);
                        }
                        catch (Exception ex)
                        {
                            Assert.IsTrue((ex as IndexOutOfRangeException) != null);
                        }

                        try
                        {
                            reader.GetColumnType(-1);
                        }
                        catch (Exception ex)
                        {
                            Assert.IsTrue((ex as IndexOutOfRangeException) != null);
                        }

                        try
                        {
                            reader.GetColumnType(2);
                        }
                        catch (Exception ex)
                        {
                            Assert.IsTrue((ex as IndexOutOfRangeException) != null);
                        }
                    }
                }

                DBHelper.ExecuteSQL("drop TestTable;", conn);
            }
        }
        public void DataReader_NextResult_Test()
        {
            using (CUBRIDConnection conn = new CUBRIDConnection())
            {
                conn.ConnectionString = DBHelper.connString;
                conn.Open();

                String sql = "select count(*) from nation; select count(*) from athlete";
                using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
                {
                    using (CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader())
                    {
                        reader.Read();
                        Assert.AreEqual(215, reader.GetInt32(0));

                        if (reader.NextResult())
                        {
                            reader.Read();
                            Assert.AreEqual(6677, reader.GetInt32(0));
                        }
                    }
                }

                sql = "select * from nation order by code asc; select * from athlete order by name asc";
                using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
                {
                    using (CUBRIDDataReader reader = (CUBRIDDataReader)cmd.ExecuteReader())
                    {
                        //verify the first two results
                        reader.Read();
                        Assert.AreEqual(4, reader.FieldCount);
                        Assert.AreEqual("AFG", reader.GetString(0));
                        Assert.AreEqual("Afghanistan", reader.GetString(1));
                        Assert.AreEqual("Asia", reader.GetString(2));
                        Assert.AreEqual("Kabul", reader.GetString(3));

                        reader.Read();
                        Assert.AreEqual(4, reader.FieldCount);
                        Assert.AreEqual("AHO", reader.GetString(0));
                        Assert.AreEqual("Netherlands Antilles", reader.GetString(1));
                        Assert.AreEqual("Americas", reader.GetString(2));
                        Assert.AreEqual("Willemstad", reader.GetString(3));

                        if (reader.NextResult())
                        {
                            //verify the first two results
                            reader.Read();
                            Assert.AreEqual(5, reader.FieldCount);
                            Assert.AreEqual(15718, reader.GetInt32(0));
                            Assert.AreEqual("Aardenburg Willemien", reader.GetString(1));
                            Assert.AreEqual("W", reader.GetString(2));
                            Assert.AreEqual("NED", reader.GetString(3));
                            Assert.AreEqual("Hockey", reader.GetString(4));

                            reader.Read();
                            Assert.AreEqual(5, reader.FieldCount);
                            Assert.AreEqual(10000, reader.GetInt32(0));
                            Assert.AreEqual("Aardewijn Pepijn", reader.GetString(1));
                            Assert.AreEqual("M", reader.GetString(2));
                            Assert.AreEqual("NED", reader.GetString(3));
                            Assert.AreEqual("Rowing", reader.GetString(4));
                        }
                    }
                }
            }
        }