본문 바로가기

프로그래밍/ASP.NET [ C# ]

[ASP.NET] MySQL 연결시 주의사항


DB접속에는 mysql connecter .net 을 씁니다.
mysql.com 에 놀러가면 받을 수 있지요. 생각보다 안정적이군요.
olebd를 쓰는것보다는 10배는 안정적인 것 같습니다.

1. 캐스팅을 안이하게 생각해서는 안됩니다.
    MS SQL을 DB로 쓸 경우, 테이블의 colurm의 데이터형이 string 일때 파라메터를 int형으로 넣거나하면 어느정도는 지가 알아서 대~충 캐스팅을 해줬는데, MySQL에서는 정확하게 데이터형에 맞춰 넣어주지 않으면 당장 예외처리합니다. 컬럼이 int라면 넣어주는 값도 Int32.Parse()를 사용하거나 해서 반드시 캐스팅을 해주고 넣어야 합니다. 이런 작은 문제때문에 몇시간을 코드를 뒤집고 있는 사태가 빈번하지요.

2. MySqlCommand 를 전역 선언한다면 반드시 static 한정자를 써서 선언합시다.
    비단 MySqlCommand 뿐 아니고 MySqlDataAdapter 라든지 MySqlDataReader의 경우도 마찬가지입니다. 즉, PostBack에 영향을 받을 만한 곳에 선언한 개체는 PostBack후에 null값이 되어버려서 DataGrid 같은 컨트롤을 쓸때 오류가 빈~번 합니다. 오류만 펑펑 띄우고 함흥처사... 내키지는 않지만, 전역선언 시 static으로 선언합시다. 보기엔 PostBack이후에도 문제없을것 같지만, 실제로 돌려보면 아닌경우가 많습니다.

3. MySqlDataReader 사용후엔 꼭 Close()해줍시다
   Connection이야 당연히 -_- close해주는거구, MySQL DB를 쓸때는 DataReader를 쓸때도 꼭 Read()함수 종결후 Close()로 닫아주어야합니다. MySqlDataReader sr = MySqlCommand(어쩌구저쩌구) 선언후, sr.Read() 했다면 , sr.Close()로 닫아주시라...이거지요.

4. MySqlConnection 사용법이 조금(많이?) 다릅니다.
    보통 SqlConnection conn = new SqlConnection (); 식으로 초기화만 시켜두고 나중에 connectionstring 필드를 써서 접속인자를 지정해주는 경우가 비일비재한데, MySql에서는 당장 오류납니다. 반드시 초기화시에 파라메터로 넣어줘야합니다 new MySqlConnection(접속인자) 이렇게...

5. 파라메터 인지문은 "@" 가 아니라 "?" 입니다...
    Parameter.Add(new MySqlParameter("?seq", MySqlDbType.Int32); 이런식으로...물론 CommandString도 마찬가지 입니다.

뭐 더 생각나면 추후에 더 올릴께요.
중요한점은 OLEDB나 SQLCONNECTION 처럼 비주얼하게(-_-;)는 못쓴다는 겁니다. 뭐 이정도도 어디냐...라는 생각이기는 하지만, 뭐든지 코더가 직접 명시해줘야한다는 점이 불편하죠...


출처 : 데브피아 ASP.NET 마을 정세훈님의 글 (http://www.devpia.com/ASPNET.MAEUL)