Database db = DatabaseFactory.CreateDatabase("DB 이름")
GetSqlStringCommand("query"): SQL을 DbCommand로 변환, DB에 execute 할 수 있게끔
GetStoredProcCommand("프로시저명"): 프로시저를 조회해서 DbCommand에 담음
=> Java의 CallableStatement로 프로시저 호출
AddInParameter(DbCommand, "프로시저 파라메터명", 파라메터에 할당할 값): 파라메터 할당
=> Java의 CallableStatement로 프로시저에 파라메터 할당
ExecuteDataSet(DbCommand): SQL을 DB에 요청해서 결과값을 DataSet으로 리턴받음
ExecuteNonQuery(DbCommand): SQL을 DB에 요청 후 영향을 받은 행 수를 리턴
=> Java의 executeQuery 혹은 exeucteUpdate
SQL 문(GetSqlStringCommand) 혹은 Stored Procedure(GetStoredProcCommand)을 나타냄
이걸 토대로 DB에 execute 할 수 있음, 일반 String 형태의 쿼리는 불가능함
CommonUtil.ToProcParam(DbCommand)으로 DbCommand를 문자열로 변환할 수 있음
DbCommand를 execute해서(SQL 요청) 나온 결과값을 DataSet으로 담을 수 있음(executeDataSet()), 해당 자료구조에 리턴된 결과값이 담김
조회된 결과를 DataSet으로 담을 수 있음, 저장 프로시저 또한 DB에 DbCommand를 통해 받아서 날릴 수 있으므로 select를 통한 여러 테이블들의 조회된 결과가 DataSet에 담기므로 DataSet은 여러 Table들을 갖는 것, 즉 DataSet.Table[0] DataSet.Table[1], ...의 문법을 갖는 것임
In-Memory 데이터베이스(디스크가 아닌 메모리에서 모든 데이터들을 관리)로 여러 테이블들을 한 DataSet 객체 안에서 관리
각 테이블(DataTable)에 접근하려면 dataSet.Tables[0]와 같이 배열 형태로 조회 가능
DataSet.Tables[n]을 통해 꺼낼 수 있음//dataTable.Columns.Add(칼럼명, 데이터 타입): 어떤 행이 추가됐는지 DataRow를 리턴함으로써 알 수 있음
dataTable.Columns.Add("AGE", typeof(int))
foreach(DataRow row in dataTable)
{
//row[칼럼명] = 데이터;
row["AGE"] = 20;
}
DataTable의 요소들(DataColumnCollection, DataRowCollection)은 리스트로 구현돼있으므로
컬렉션[인덱스]와 같은 형태로 접근 가능
DataRow[] drData = dsData.Tables[0].Select();
// 일부 행 리턴
DataRow[] rows = dataTable.Select(string filterExpression)
MS-SQL을 쓸 경우 SSMS에서 프로시저를 분석하자, SELECT문으로 조회된 순서대로 DataSet의 Tables의 담김