나는 드라이버와 매개 변수를 전달하기 만하면되는 "도우미"클래스를 만들고 클래스는 연결 및 연결 문자열 어셈블리를 수행합니다.일반 액세스 용 IDataReader
IDataReader, IDbConnection과 같은 System.Data의 인터페이스를 사용하고 있습니다.
이제 MySQL을 사용하여 테스트 한 후 코드가 완벽하게 작동하지만 SQL Server (Microsoft) 용으로 코드를 지정하고 구성하면 처리 된 행이 반환되지 않습니다. 일부 디버깅을 수행 한 및 SQL 서버 정보를 IDataReader에 나타나지만 그것을 통해 반복 할 수없는 것?
내 현재 코드 : 도우미 클래스
try
{
factory = System.Data.Common.DbProviderFactories.GetFactory(driver);
_con = factory.CreateConnection();
_con.ConnectionString = buildConnectionString.ToString();
_con.Open();
}
catch (System.Data.Common.DbException ex)
{
_con = null;
throw ex;
}
catch (Exception ex)
{
_con = null;
throw ex;
}
return _con;
A I는 SQL Server 및 MySql.Data에 대한의 System.Data.SQLClient로 내 드라이버를 통과하고있어 순간에
연결 방법. MySQL 용 MySqlClient.
System.Data.IDataReader reader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
while (reader.Read())
{
System.Data.DataRow row = table.NewRow();
// Insert info from Reader into the Row
table.Rows.Add(row);
}
reader.Close();
나는 그것이 IDataReader에이 유형을 처리하려고하는 방법을 함께 할 수있는 뭔가가 있지만 MySQL을위한 있지만 SQL Server에 대해 완벽하게 작동하고 같은이에있는 모든 문서를 찾을 수없는 의심? 어떤 도움?
과 관련이 없지만 오류 처리는 아무 것도하지 않는 것이 특히 유용합니다. 특히 오류 사례에 연결을 처리하지 않아서 스택 추적을 파괴하고 있습니다. 하나의'catch {if (conn! = null) {conn.Dispose(); } 던졌습니다; }'이 표시 코드와 함께 IMO –
이 더 좋을 것입니다. 'while (reader.Read()) 블록 안에 들어갔습니까? 그렇지 않다면, 나는 당신의 SQL이 탓이라고 의심한다; 그게 작동해야합니다 ... –
팁 주셔서 감사합니다 그에 따라 변경됩니다. –