//---------------------------------------------------------------------------------------------------- /// <summary> /// 아답터 생성 /// </summary> /// <param name="table_name">테이블 이름</param> /// <returns>데이터어답터 객체</returns> //---------------------------------------------------------------------------------------------------- public DbDataAdapter CreateAdapter( string table_name ) { if( !Connect() ) return null; // Select 커멘더 생성 DbCommand command = m_connection.CreateCommand(); command.CommandType = CommandType.Text; command.CommandText = "SELECT * FROM " + table_name; // 어답터 생성 DbDataAdapter adapter=null; switch(m_type) { case eType.SQLite: adapter = new SqliteDataAdapter((SqliteCommand)command); break; case eType.MySQL: adapter = new MySqlDataAdapter((MySqlCommand)command); break; case eType.MSSQL: adapter = new SqlDataAdapter((SqlCommand)command); break; case eType.Oracle: adapter = new OracleDataAdapter((OracleCommand)command); break; } // Insert,Update,Delete 컴멘더 생성 DbCommandBuilder builder = null; switch(m_type) { case eType.SQLite: builder = new SqliteCommandBuilder(); break; case eType.MySQL: builder = new MySqlCommandBuilder(); break; case eType.MSSQL: builder = new SqlCommandBuilder(); break; case eType.Oracle: builder = new OracleCommandBuilder(); break; } builder.DataAdapter = adapter; adapter.InsertCommand = builder.GetInsertCommand(); adapter.UpdateCommand = builder.GetUpdateCommand(); adapter.DeleteCommand = builder.GetDeleteCommand(); return adapter; }
//---------------------------------------------------------------------------------------------------- /// <summary> /// 테이블 읽기 /// </summary> /// <param name="table">테이블 객체</param> /// <param name="sql">SQL문</param> /// <returns>데이터어답터 객체</returns> //---------------------------------------------------------------------------------------------------- public DbDataAdapter ReadTable( DataTable table, string sql ) { if( !Connect() ) return null; DbDataAdapter adapter=null; try { // Select 커멘더 생성 m_command = m_connection.CreateCommand(); m_command.CommandType = CommandType.Text; m_command.CommandText = sql; // 어답터 생성 switch(m_type) { case eType.SQLite: adapter = new SqliteDataAdapter((SqliteCommand)m_command); break; case eType.MySQL: adapter = new MySqlDataAdapter((MySqlCommand)m_command); break; case eType.MSSQL: adapter = new SqlDataAdapter((SqlCommand)m_command); break; case eType.Oracle: adapter = new OracleDataAdapter((OracleCommand)m_command); break; } // Insert,Update,Delete 컴멘더 생성 DbCommandBuilder builder = null; switch(m_type) { case eType.SQLite: builder = new SqliteCommandBuilder(); break; case eType.MySQL: builder = new MySqlCommandBuilder(); break; case eType.MSSQL: builder = new SqlCommandBuilder(); break; case eType.Oracle: builder = new OracleCommandBuilder(); break; } builder.DataAdapter = adapter; adapter.InsertCommand = builder.GetInsertCommand(); adapter.UpdateCommand = builder.GetUpdateCommand(); adapter.DeleteCommand = builder.GetDeleteCommand(); // 테이블 채워 넣기 adapter.Fill(table); return adapter; } catch( Exception ex ) { Log( ex.ToString() ); m_error = ex.Message; CloseQuery(); return null; } }
/// <summary> /// 功能:把dt表中的数据全部追加到Oracle数据中指定的表 /// 注意:要保证dt表的列与数据库中指定表默认检索的列的次序相同 /// </summary> /// <param name="strconn">链接字符串</param> /// <param name="dt">要追加的数据</param> /// <param name="tb_name">数据库中的表名</param> public void insertDB(DataTable dt, string tb_name) { try { conn = new OracleConnection(strconn); conn.Open(); //获取表结构,构造new_dt com = conn.CreateCommand(); com.CommandText = "select * from " + tb_name + " where 0=1"; ; com.CommandType = CommandType.Text; da = new OracleDataAdapter(com); DataTable new_dt = new DataTable(); da.Fill(new_dt); //复制dt的数据到new_dt中 DataRow new_dr = new_dt.NewRow(); foreach (DataRow dr in dt.Rows) { for (int i = 0; i < dt.Columns.Count; ++i) { new_dr[i] = dr[i]; } new_dt.Rows.Add(new_dr); } //自动构造InsertCommand命令 ocb = new OracleCommandBuilder(da); da.InsertCommand = ocb.GetInsertCommand(); da.UpdateBatchSize = 5000; da.Update(new_dt); } catch (Exception ex) { //暂不处理,抛给上层做处理 throw (ex); } finally { conn.Close(); ocb.Dispose(); da.Dispose(); com.Dispose(); conn.Dispose(); } }