GetInsertCommand() 개인적인 메소드

private GetInsertCommand ( ) : System.Data.OracleClient.OracleCommand
리턴 System.Data.OracleClient.OracleCommand
예제 #1
0
        //----------------------------------------------------------------------------------------------------
        /// <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;
        }
예제 #2
0
        //----------------------------------------------------------------------------------------------------
        /// <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;
            }
        }
예제 #3
0
        /// <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();
            }
        }