저도 C#을 사용하기 때문에..
SELECT문을 쿼리로 날려 데이터를 받고 싶으시다면..
ExcuteNonQuery(); 가 아닌..
ExcuteReader()나 ExcuteScalar()를 사용하시면 됩니다..
저 같은 경우는 SELECT 중복검사할 열 FROM TABLE 명을 Scalar나 Reader로 받아 처리하곤 했는데요..
코드상으로는 이렇게...
Sql = "SELECT * FROM USERINFO WHERE NAME='" + UI쪽에서 불러오는 텍스트명 + "' AND AGE='" + UI쪽에서 불러오는 텍스트명 + "';";
object result = fbUSER.ExcuteScalar(Sql);
Reader함수는 그냥 제가 쓰기 편할려고 이렇게 작성하였구요...(Scalar도 비슷하게..)
public FbDataReader ExcuteReader(string SQLQuery)
{
SQLsyntax = SQLQuery;
//fbCon.Open();
//ft = fbCon.BeginTransaction();
fc = new FbCommand(SQLsyntax, fbCon, ft);
//fc.CommandType = CommandType.Text;
fr = fc.ExecuteReader();
//ft.Commit();
//fbCon.Close();
//fc.Dispose();
//fr.Close();
return fr;
}
최상위 클래스인 object형으로 데이터를 받는거죠..
하나라도 존재한다면 NAME열의 값이 리턴될꺼에요..
없다면 null 값이 리턴될테고..(맞는지는 디버깅해봐야 알듯..)
DATASET으로 받았을 때 대략 DB의 데이터만큼 메모리를 먹고 들어갑니다...
대신 메모리에 DB와 같은 테이블을 만들어 사용한다고 하네요.. 사용할때는 빠르지요..(디비에 연결해서 Data받아오는 속도만큼 나오는 것 같네요..)
READER로는 한번 사용하면 라인으로 읽는다고 하네요.. While문으로 Read.. Read..
사용하기 나름이겠지만요.. 그리고 방대한 DB의 데이터가 어느정도일지는 모르겠지만..
엑셀로 변환할 때 프로그램이 멈춘다는 느낌을 받을 정도의 시간이 걸렸습니다.. 대략 몇백? 몇십만건이였던 것 같은데..
DB용량은 대략 1G바이트정도였구요...
그정도의 데이터가 아니라면 중복체크는 가능하다고 판단되네요..
한번 해보세요..^^; 저도 전문가는 아니라 답변이 될지는 모르겠네요..
그리고 저도 궁금한 것도 많고 필요한 것도 많아서.. 필요하면 서로 공유하면서 하면 좋겠네요..
입문자 님이 쓰신 글 :
: 박우성님 kylix님 초보자님 감사합니다!
: 제가 아직 개념조차 부족해서 답변을 봐도 잘 못하겠네요..ㅎㅎ
: cmd창에서 select문을 써서 확인은 가능한데..
: C#에서 cmd.CommandText = "SELECT ......"; 을 해주고 cmd.ExecuteNonQuery();를 해주면 쿼리문이 실행되면서 변경된 라인이 몇개인지에 대해 리턴이 되는거 같더라고요.. 그래서 select문에 대한 리턴값을 확인 불가능하더라고요ㅜ
:
: 아 그리고 유니크 인덱스를 만드는것은 태이블내에 필드값중에 유니크한 값을 만드는거 아닌가요?
: 입문한지 얼마 되지 않아서 어리버리한거 같네요..ㅜㅜ
:
: C#내에서 select문을 CommandText에 넣어주고, select문에 대한 리턴갑을 어떻게 받아야하는지..
: 그리고 만약 DB내에 방대한 자료를 갖게 된다면 검색하는데 시간이 많이 소요되나요..?
: 그렇다면 제가 원하는 필드에 대해 Super Key로 선언하고, try catch로 중복 요류라고 나오는 부분에 대해 하는게 더 빠를까요?
: 공부를 하다보니까 궁금한점이 계속 생기네요..ㅜ
: 일단 혼자서 열심히 코딩해보겠습니다!
:
: 다시한번 진심으로 감사드립니다!!!!!!!!!!~
:
:
: 입문자 님이 쓰신 글 :
: : 안녕하세요?
: : DB초보자 입니다.
: : C#과 FireBird를 이용해서 프로그램을 하고있는데요 PK로 index가 있고, 자동 증가 시켜서 문제없이 하고 있습니다.
: : 다른 필드는 중복되어도 되는데, ComName은 중복이 되면 안되서요..
: : INSERT INTO table_name(index, aa, bb, cc, ComName) VALUES("GEN_ID(seq_index, 1), 'aa', 'bb', 'cc', 'comName');
: : 이런식으로 DB에 추가해주는데요 문제는 comName이 중복이 되는지 체크하고, 중복이 안되면 넣고, 중복이 되면 표시를 해줘야합니다ㅜ
: :
: : comName도 PK로 선언하고, try catch문으로 중복이 되는 오류에 대해 프로그래밍을 해야하나요?
: : 검색해서 하게 되면 DB에 자료가 많으면 시간이 많이 걸릴꺼같고요..
: :
: : 중복을 확인하는 sql문이 있을까요? 아니면 다른 좋은 방법이 없을까요?ㅜㅜ
: :
: : 혼자 힘으로 해결하려다가 DB는 초보자라.. 검색을 해도 잘 모르겠어서 질문 남깁니다!
: : 감사합니다!
|