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); }
//一般结果集的展示 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); } }