내가 ado.net 작업을위한 기본 클래스를 가지고, 그 다음과 같습니다데이터 리더에서 데이터 테이블로 데이터를 읽는 방법?
public abstract class BaseDataAccess
{
private string _connectionString = ......
protected string ConnectionString
{
get { return _connectionString; }
}
protected object ExecuteScalar(string spName, SqlParameter[] parameters=null)
{
using (SqlConnection connection = new SqlConnection(_connectionString))
{
using (SqlCommand command = new SqlCommand(spName, connection))
{
if (parameters != null)
{
command.Parameters.AddRange(parameters);
}
command.CommandType = System.Data.CommandType.StoredProcedure;
connection.Open();
return command.ExecuteScalar();
}
}
}
protected DataTable ExecuteReader(string spName, SqlParameter[] parameters=null)
{
using (SqlConnection connection = new SqlConnection(_connectionString))
{
using (SqlCommand command = new SqlCommand(spName, connection))
{
if (parameters != null)
{
command.Parameters.AddRange(parameters);
}
command.CommandType = CommandType.StoredProcedure;
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
DataTable table = new DataTable();
table.Load(reader);
return table;
}
}
}
}
}
그리고 사용자 테이블을 조회하는 클래스를
public class UsersAccess : BaseDataAccess
{
private const string SP_COUNT_USERS = "spCountUsers";
private const string SP_GET_USERS = "spGetUsers";
public int CountUsers()
{
return (int)base.ExecuteScalar(SP_COUNT_USERS);
}
public IList<User> GetUsers()
{
DataTable usersTable = base.ExecuteReader(SP_GET_USERS);
return GetUsersFromDataTable(usersTable);
}
private IList<User> GetUsersFromDataTable(DataTable usersTable)
{
IList<User> users = new List<User>();
foreach (DataRow row in usersTable.Rows)
{
User user = new User();
user.UserID = (int)row["UserID"];
user.Password = (string)row["Password"];
user.Username = (string)row["Username"];
}
return users;
}
}
데이터 판독기 2 데이터 행하지만 함께 제공 데이터 테이블에 데이터가 입력되지 않을 때 어떻게 수행할까요?
추 신 : ado.net의 기본 클래스를 향상시키는 데 도움이되는 정보가 있으면 좋을 것입니다. 나는 테이블이 거의없고 절차/테이블이 거의 없습니다. 나는 당신의 현재 코드가 작동하지 않는 이유에 좋은 이유를 확인할 수 없습니다 있지만
당신은 DataAdapter.Fill 방법을 시도해 볼 수도의 끝에
users.Add(user);
가 없습니다. (http://msdn.microsoft.com/en-us/library/497b1k4t.aspx) –