62,054
社区成员
发帖
与我相关
我的任务
分享
public interface IConverterFromDbDataReader<T>
{
void ConvertFrom(DbDataReader reader);
}
public class FileTransferBlock : IConverterFromDbDataReader<FileTransferBlock>
{
public long CallID;
public string SourceFile;
public string TargetFile;
public long StartPosition;
public void ConvertFrom(DbDataReader reader)
{
this.CallID = (long)reader["call_id"];
this.SourceFile = (string)reader["source"];
this.TargetFile = (string)reader["target"];
this.StartPosition = (long)reader["position"];
}
}
static public List<T> GetRecords<T>(string sql, params DbParameter[] para) where T : IConverterFromDbDataReader<T>, new()
{
using (DbConnection conn = CreateNewConnection())
{
conn.Open();
var comm = conn.CreateCommand();
comm.CommandText = sql;
comm.Parameters.AddRange(para);
var reader = comm.ExecuteReader();
var result = new List<T>();
while (reader.Read())
{
var obj = new T();
obj.ConvertFrom(reader);
result.Add(obj);
}
return result;
}
}
public interface IConverterFromDbDataReader<T>
{
void Convert(DbDataReader reader, T obj);
}
public class FileTransferBlock : IConverterFromDbDataReader<FileTransferBlock>
{
public long CallID;
public string SourceFile;
public string TargetFile;
public long StartPosition;
public void Convert(DbDataReader reader, FileTransferBlock obj)
{
obj.CallID = (long)reader["call_id"];
obj.SourceFile = (string)reader["source"];
obj.TargetFile = (string)reader["target"];
obj.StartPosition = (long)reader["position"];
}
}
static public List<T> GetRecords<T>(string sql, params DbParameter[] para) where T : IConverterFromDbDataReader<T>, new()
{
using (DbConnection conn = CreateNewConnection())
{
conn.Open();
var comm = conn.CreateCommand();
comm.CommandText = sql;
comm.Parameters.AddRange(para);
var reader = comm.ExecuteReader();
var result = new List<T>();
while (reader.Read())
{
var obj = new T();
obj.Convert(reader, obj);
result.Add(obj);
}
return result;
}
}