[.NET] Oracle DB에서 Select, Insert, Update, Delete

김방울·2023년 8월 30일

.NET

목록 보기
1/1
post-thumbnail

어쩌다보니 .NET으로 개발된 웹사이트(=유물)을 유지보수하고 있는데, (심지어 웹폼이다)
추가기능을 개발하게 되면서 CRUD를 구현해야 하는 일이 종종 있었습니다.

처음에 DB에서 데이터 주고받는 법을 아예 몰라서 검색하면서 헤맸는데, 까먹지 않고 다음에 추가요청이 들어올때 빠른 재활용을 위해 메모..합니다..😵

// CRUD.cs
using System;
using System.Collections.Generic;
using System.Data;
using System.Web.Services;
using System.Data.OracleClient;

public class CLUD : System.Web.Services.WebService{
    private OracleConnection getConnection(){
    // DB 접속정보 설정
      return new System.Data.OracleClient.OracleConnection("Data Source=DB Source; User ID=userId; Password=Password");
    }

    // Insert, Delete, Update용 쿼리에 모두 사용 가능한 함수
    public string InsertQuery(string qs){
    // qs: 파라미터로 입력받을 쿼리
      string result;

      using (OracleConnection connection = getConnection()){
        OracleCommand command = new OracleCommand(qs, connection);
        connection.Open();

        OracleTransaction tran = connection.BeginTransaction();
        command.Transaction = tran;
      }

      try{
        result = command.ExecuteNonQuery().ToString(); 
        // command.ExecuteNonQuery() 실행 시 영향을 받은 행의 수가 리턴됩니다.
        tran.Commit(); // Table Lock 방지
      }
      catch (Exception ex){
        result = ex.ToString();
        tran.Rollback();
      }

      return result;
    }

	// Select용 함수
    public DataTable SelectQuery(string qs){
      DataTable dt = new DataTable();

      using (OracleConnection connection = getConnection()){
        OracleCommand command = new OracleCommand(qs, connection);
        connection.Open();
        OracleDataReader reader = command.ExecuteReader();

        dt.Load(reader);
        reader.Close();
      }
      
      return dt;
    }
}

위와 같은 클래스를 만들고 .aspx.cs 단에서 사용할 때는 다음과 같이 사용했습니다.

// .aspx.cs 에서 사용하기 
public partial class Test : PageBase {
  private DataTable Select(string evaYear){
    string qs = "SELECT * FROM TABLE WHERE EVA_YEAR ='" + evaYear + "' ORDER BY ORDER_NUM ASC";
    return new CRUD().SelectQuery(qs);
  }

  private string Insert(string name, string desc){
    string qs = "INSERT INTO ITEMTABLE(ITEM_NAME, DSC) VALUES('" +name+"', '" + desc +"')";
    return new CRUD().InsertQuery(result);
  }
}

Oracle DB에서 Select, Insert하는 코드를 작성했지만 mssql도 사용하는 클래스만 다르고, 구조 자체는거의 비슷한 것 같습니다. SqlDataReader, SqlDataAdapter 등을 사용하는 정도,,? 😦

요즘 닷넷 클래식ASP JSP만 주구장창 보다보니
자바스크립트가 너무 그립..습니다
😇

profile
코딩하는 고양이🐱 / UI Developer, Front-end Developer

0개의 댓글