我从多个表收集数据,如补充水分,我的业务对象,MARS VS NextResult
SELECT * FROM CaDataTable; SELECT * FROM NyDataTable; SELECT * FROM WaDataTable;
等等... (C#3.5,SQL Server 2005中)
我一直在使用批次:
void BatchReader()
{
string sql = "Select * From CaDataTable" +
"Select * From NyDataTable" +
"Select * From WaDataTable";
string connectionString = GetConnectionString();
using (SqlConnection conn = new SqlConnection(connectionString)) {
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
using (SqlDataReader reader = cmd.ExecuteReader()) {
do {
while (reader.Read()) {
ReadRecords(reader);
}
} while (reader.NextResult());
}
}
}
我也用对相同的连接多个命令:
void MultipleCommandReader()
{
string connectionString = GetConnectionString();
string sql;
SqlCommand cmd;
using (SqlConnection conn = new SqlConnection(connectionString)) {
conn.Open();
sql = "Select * From CaDataTable";
cmd = new SqlCommand(sql, conn);
using (SqlDataReader reader = cmd.ExecuteReader()) {
while (reader.Read()) {
ReadRecords(reader);
}
}
sql = "Select * From NyDataTable";
cmd = new SqlCommand(sql, conn);
using (SqlDataReader reader = cmd.ExecuteReader()) {
while (reader.Read()) {
ReadRecords(reader);
}
}
sql = "Select * From WaDataTable";
cmd = new SqlCommand(sql, conn);
using (SqlDataReader reader = cmd.ExecuteReader()) {
while (reader.Read()) {
ReadRecords(reader);
}
}
}
}
这些技术之一是否明显优于其他技术? 另外,如果我在第二种方法上使用MARS会有收益吗?换句话说,是否像在连接字符串中设置MultipleActiveResultSets = True一样简单并且获得了很大的好处?
谢谢,这是一个很好的选择。如果我不确定每个表是否存在,是否有编码的方法?换句话说,如何防御NyDataTable不存在的情况呢? – Sisiutl 2009-06-17 19:24:19