Пример #1
0
        public static int test_lob()
        {
            XGConnection conn = new XGConnection();

            conn.ConnectionString = conn_xg;
            XGClob t_Clob = new XGClob();
            XGBlob t_Blob = new XGBlob();

            try
            {
                conn.Open();
                XGCommand cmd = new XGCommand();
                cmd.Connection  = conn;
                cmd.CommandText = "SELECT COUNT(*) FROM ALL_TABLES WHERE TABLE_NAME='TEST_LOB'";
                if (Convert.ToInt32(cmd.ExecuteScalar()) == 0)
                {
                    cmd.CommandText = "CREATE TABLE TEST_LOB(COL INT,COL2 BLOB,COL3 CLOB)";
                    cmd.ExecuteNonQuery();
                }
                else
                {
                    cmd.CommandText = "DROP TABLE TEST_LOB";
                    cmd.ExecuteNonQuery();
                    cmd.CommandText = "CREATE TABLE TEST_LOB(COL INT,COL2 BLOB,COL3 CLOB)";
                    cmd.ExecuteNonQuery();
                }
                //装载BLOB和CLOB数据
                using (FileStream t_f = new FileStream(b_filepath, FileMode.Open, FileAccess.Read))
                {
                    Array.Clear(buff, 0, buff.Length);
                    Count = t_f.Read(buff, 0, buff.Length);
                    t_Blob.BeginChunkWrite();
                    while (Count > 0)
                    {
                        t_Blob.write(buff, 0, Count);
                        Array.Clear(buff, 0, buff.Length);
                        Count = t_f.Read(buff, 0, buff.Length);
                    }
                    t_Blob.EndChunkWrite();
                }
                using (FileStream t_f = new FileStream(c_filepath, FileMode.Open, FileAccess.Read))
                {
                    Array.Clear(buff, 0, buff.Length);
                    Count = t_f.Read(buff, 0, buff.Length);
                    t_Clob.BeginChunkWrite();
                    while (Count > 0)
                    {
                        t_Clob.write(buff, 0, Count);
                        Array.Clear(buff, 0, buff.Length);
                        Count = t_f.Read(buff, 0, buff.Length);
                    }
                    t_Clob.EndChunkWrite();
                }
                //插入大对象
                cmd.CommandText = "INSERT INTO TEST_LOB VALUES(1,?,?);";
                cmd.Parameters.Clear();
                cmd.Parameters.Add("COL2", XGDbType.LongVarBinary).Value = t_Blob;
                cmd.Parameters.Add("COL3", XGDbType.LongVarChar).Value   = t_Clob;
                cmd.ExecuteNonQuery();
                t_Clob.Dispose();
                t_Blob.Dispose();

                //导出大对象
                cmd.CommandText = "SELECT COL2,COL3 FROM TEST_LOB WHERE COL=1;";
                XGDataReader t_Reader = cmd.ExecuteReader();
                if (t_Reader.Read())
                {
                    t_Blob = t_Reader.GetXGBlob(0);
                    t_Clob = t_Reader.GetXGClob(1);
                    //CLOB
                    using (FileStream t_f = new FileStream(cp_filepath, FileMode.Create, FileAccess.Write))
                    {
                        Array.Clear(buff, 0, buff.Length);
                        Console.WriteLine("CLOB导出文件大小:{0}", t_Clob.Length);
                        Count = t_Clob.Read(buff, 0, buff.Length);
                        while (Count > 0)
                        {
                            t_f.Write(buff, 0, Count);
                            Array.Clear(buff, 0, buff.Length);
                            Count = t_Clob.Read(buff, 0, buff.Length);
                        }
                    }
                    //BLOB
                    using (FileStream t_f = new FileStream(bp_filepath, FileMode.Create, FileAccess.Write))
                    {
                        Array.Clear(buff, 0, buff.Length);
                        Console.WriteLine("BLOB导出文件大小:{0}", t_Blob.Length);
                        Count = t_Blob.Read(buff, 0, buff.Length);
                        while (Count > 0)
                        {
                            t_f.Write(buff, 0, Count);
                            Array.Clear(buff, 0, buff.Length);
                            Count = t_Blob.Read(buff, 0, buff.Length);
                        }
                    }
                }
                t_Reader.Close();
                t_Clob.Dispose();
                t_Blob.Dispose();
            }
            catch (Exception Err)
            {
                Console.WriteLine("Error :");
                Console.WriteLine("\t{0}", Err.ToString());
                return(-1);
            }
            finally
            {
                conn.Close();
            }
            return(0);
        }
Пример #2
0
        //一般结果集的展示
        public static int test_displayResult()
        {
            XGConnection conn = new XGConnection();

            conn.ConnectionString = conn_xg;
            DataSet ds = new DataSet();

            try
            {
                conn.Open();
                XGCommand cmd = new XGCommand();
                cmd.Connection  = conn;
                cmd.CommandText = "select * from ta;";
                XGDataAdapter t_Adapter = new XGDataAdapter(cmd);
                t_Adapter.Fill(ds, "ta");
                //=============================
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    string val = "人员表数据: \n";
                    for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
                    {
                        val += ds.Tables[0].Rows[i][j].ToString() + "|";     //采用adapter类获取结果集数据
                    }
                }
                //=========== datareader
                string sql_str2 = "select * from tp;";

                XGCommand cmd2 = conn.CreateCommand();// 或者 new DBCommand(sql_str, conn);
                cmd.CommandText = sql_str2;
                XGDataReader reader   = cmd.ExecuteReader();
                XGDataRecord t_Record = new XGDataRecord(reader);
                Console.WriteLine("结果集列数:\t{0}", t_Record.FieldCount);
                while (reader.Read())
                {
                    XGDataRecord t_record = new XGDataRecord(reader);
                    string       val      = "人员数据: \n";
                    string       id       = reader.GetInt32(0).ToString();
                    string       pid      = reader.GetString(1);
                    string       pname    = Convert.ToString(t_record[2]);  //采用record类获取结果集
                    string       desc     = reader.IsDBNull(3) ? null : reader.GetString(3);
                    string       date     = reader.GetDateTime(4).ToString();

                    val += id + "|" + pid + "|" + pname + "|" + desc + "|" + date + "|";
                    Console.WriteLine(val);
                }

                reader.Dispose();
                cmd2.Dispose();
                cmd.Dispose();
                t_Adapter.Dispose();
                conn.Close();
                return(0);
            }
            catch (Exception Err)
            {
                Console.WriteLine("Error :");
                Console.WriteLine("\t{0}", Err.ToString());
                conn.Close();
                return(-1);
            }
        }