string query = "select *from tblAddress";
// 1. 데이터 어댑터 생성
SqlDataAdapter adapter = new SqlDataAdapter(query, Properties.Resources.conStr);
// 2. 데이터 집합 생성 - 복사본
DataSet ds = new DataSet();
// 3. 데이터 채우기
adapter.Fill(ds, "tblAddress");
Console.WriteLine(ds.Tables["tblAddress"].Rows.Count);
// 4. 데이터 확인
DataTable dt = ds.Tables["tblAddress"];
for (int i = 0; i < dt.Rows.Count; i++)
{
Console.WriteLine("{0}\t{1}\t{2}\t{3}", dt.Rows[i]["id"].ToString(),dt.Rows[i]["name"].ToString(),
dt.Rows[i]["email"].ToString(), dt.Rows[i]["age"].ToString());
}
------------------------------------------------------------------------------------------------------------------------------
//질의가 두개 일때의 처리방법
SqlDataAdapter adapter = new SqlDataAdapter("select *from tblTest1; select *from tblTest2;", con);
DataSet ds = new DataSet();
adapter.Fill(ds); // 질의가 두개일때는 임시테이블명 못준다.
// 질의가 두개 일때는 아래와같이 테이블 이름을 준다...
ds.Tables[0].TableName = "tblTest1";
ds.Tables[1].TableName = "tblTest2";
Console.WriteLine(ds.Tables.Count);
for (int i = 0; i < ds.Tables.Count; i++)
{
for (int j = 0; j < ds.Tables[i].Rows.Count; j++)
{
Console.WriteLine("{0}\t{1}",ds.Tables[i].Rows[j]["seq"].ToString(), ds.Tables[i].Rows[j]["memo"].ToString());
}
}
// 테이블 1개 추가
SqlDataAdapter adapter2 = new SqlDataAdapter("select *from tblAddress", con);
//DataSet ds2 = new DataSet();
adapter2.Fill(ds, "tblAddress");
Console.WriteLine(ds.Tables.Count);
for (int i = 0; i < ds.Tables.Count; i++)
{
Console.WriteLine(ds.Tables[i].TableName);
}
-----------------------------------------------------------------------------------------------------------
SqlConnection con = new SqlConnection(Properties.Resources.conStr);
SqlCommand cmd = new SqlCommand("select *from tblAddress", con);
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
// EOF 의 커서는 전진커서..뒤로 역탐색은 불가능하다.
while (reader.Read())
{
Console.WriteLine((int)reader["age"]+1);
// ★★ reader.GetInt32() : 캐스팅되서 나오는것. 단, 인덱스로만 접근가능하다.
Console.WriteLine(reader.GetInt32(3) + 1);
Console.WriteLine("{0}\t{1}", reader["id"].ToString(), reader["age"].ToString());
}
reader.Close();
reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine("{0}\t{1}", reader["id"].ToString(), reader["age"].ToString());
}
con.Close(); //다 읽은후에는 연결종료
reader.Close(); // reader도 종료
// 비연결
// 2번출력해주는게 쉽다.빠르다. (DatasSet에 들어있으니까..)
SqlDataAdapter adapter = new SqlDataAdapter("select *from tblAddress", con);
DataSet ds = new DataSet();
adapter.Fill(ds, "tblAddress");
// 2번 출력
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Console.WriteLine("{0}\t{1}", ds.Tables[0].Rows[i]["id"].ToString(), ds.Tables[0].Rows[i]["age"].ToString());
}
Console.WriteLine();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Console.WriteLine("{0}\t{1}", ds.Tables[0].Rows[i]["id"].ToString(), ds.Tables[0].Rows[i]["age"].ToString());
}
RECENT COMMENT