当前位置:网站首页>Comparaison de deux façons d'accéder à la base de données SQL Server (sqldatareader vs sqldataadapter)
Comparaison de deux façons d'accéder à la base de données SQL Server (sqldatareader vs sqldataadapter)
2022-06-30 08:37:00 【La lune est comme moi.】
1.UtiliserSqlDataReaderLire les données
public bool CheckResultFromDatabase(string guid)
{
string connStr = "Data Source = localhost; Initial Catalog = TestDB; User ID = sa; Password = Abc12345";
// Create connection
SqlConnection Myconnect = new SqlConnection(connStr);
Myconnect.Open();
// Build up query
StringBuilder sb = new StringBuilder();
sb.Append($"select id, name from dbo.table_a where id = '{
guid}';");
sb.Append($"select student_id, student_name from dbo.student where student_name = 'zhangsan';");
string sql = sb.ToString();
SqlCommand sqlQuery = new SqlCommand(sql, Myconnect);
int rowCount = 0;
bool [] checkresult = {
false, false };
int expectedResultNum = 2;
int currentResult = 0;
using (SqlDataReader reader = sqlQuery.ExecuteReader())
{
do
{
rowCount = 0;
while (reader.Read())
{
rowCount++;
}
if (rowCount == 1)
{
checkresult[currentResult++] = true;
if (currentResult == expectedResultNum)
break;
}
} while (reader.NextResult()); // go to result of next sql query
reader.Close();
}
Myconnect.Close(); // close databse
return checkresult[0] && checkresult[1];
}
2.UtiliserSqlDataReaderLire les données
public bool CheckResultFromDatabaseAdapter(string guid)
{
string connStr = "Data Source = localhost; Initial Catalog = TestDB; User ID = sa; Password = Abc12345";
bool resultConfig = false;
bool resultSummary = false;
using (SqlConnection conn = new SqlConnection(connStr))
{
string strSql = $"select id, name from dbo.table_a where id = '{
guid}';";
using (SqlDataAdapter adapter = new SqlDataAdapter(strSql, conn))
{
DataTable dt = new DataTable();
adapter.Fill(dt);
if (dt.Rows.Count == 1)
{
resultConfig = true;
}
//dt.Rows[0][1] //1st record 1st row
//foreach (DataRow dataRow in dt.Rows)
//{
// Console.WriteLine(dataRow["SimulationId"]);
//}
}
strSql = $"select student_id, student_name from dbo.student where student_name = 'zhangsan';";
using (SqlDataAdapter adapter = new SqlDataAdapter(strSql, conn))
{
DataTable dt = new DataTable();
adapter.Fill(dt);
if (dt.Rows.Count == 1)
{
resultSummary = true;
}
}
}
return resultConfig & resultSummary;
}
3. Comparaison des deux méthodes
Les deux codes ci - dessus,Même fonction,C'est - à - dire:: Lire à partir de deux tableaux les données correspondant à une condition , Si le nombre d'enregistrements respectifs est 1,Renvoietrue,Sinon, retournez àfalse.
SqlDataReaderLa caractéristique de:
- Plusieurs requêtes peuvent être faites en même temps , Doit également être fait en même temps . Unified Return and pass NextResult() Pour passer à l'ensemble de résultats suivant . L'avantage le plus important de cette réduction est clientEtdb serverNombre d'interactions pour, Dans certains cas, l'efficacité des procédures peut être considérablement améliorée .
- Non.RowCountPropriétés ou méthodes, Si vous voulez connaître le nombre d'enregistrements dans un ensemble de résultats , Vous ne pouvez faire vos propres statistiques qu'après avoir traversé .En dernier analyse,Pas très amical..
Finis le premier. ,SqlDataAdapter Les caractéristiques de :
- Interface riche, Pour les programmeurs ,Beaucoup plus pratique.
- Peut être interrogé plus d'une fois , Aide à améliorer la lisibilité du programme .
边栏推荐
- Redis design and Implementation (II) | database (deletion strategy & expiration elimination strategy)
- Getordefault method of map class
- Detectron2 source code reading 4-- registrar construction model
- [untitled]
- 证券开户的优惠怎样才能得到?在线开户安全?
- Redis设计与实现(五)| Sentinel哨兵
- Interference source current spectrum test of current probe
- 微信公众号第三方平台开发,零基础入门。想学我教你啊
- layer. Open processing method when the passed value is an array or the value is too long
- Redis design and Implementation (IV) | master-slave replication
猜你喜欢

Wechat official account third-party platform development, zero foundation entry. I want to teach you

Codeworks 5 questions per day (1700 for each) - the third day

TiDB 6.0:让 TSO 更高效丨TiDB Book Rush

Cesium learning notes (IV) visual image & Terrain

Wsl2 using GPU for deep learning

Redis设计与实现(八)| 事务

Redis design and Implementation (II) | database (deletion strategy & expiration elimination strategy)

【NVMe2.0b 14-6】Format NVM、Keep Alive、Lockdown command

Detailed explanation of pytoch's scatter function

Redis设计与实现(五)| Sentinel哨兵
随机推荐
Gilbert Strang's course notes on linear algebra - Lesson 3
Cesium learning notes (VI) particle system
Wsl2 using GPU for deep learning
Introduction to MySQL foundation power node [Lao Du] class assignment
mysql基础入门 day3 动力节点[老杜]课堂笔记
【kotlin 协程】万字协程 一篇完成kotlin 协程进阶
Using typera+picgo to realize automatic uploading of markdown document pictures
Redis设计与实现(六)| 集群(分片)
我们如何拿到自己满意的薪资呢?这些套路还是需要掌握的
国债逆回购绝对安全吗 网上怎么开户
Redis design and Implementation (IV) | master-slave replication
启动jar包报错UnsupportedClassVersionError,如何修复
小心transmittable-thread-local的这个坑
[untitled]
Sword finger offer II 075 Array relative sort (custom sort, count sort)
php api获取二维码、组合生成图片
微信公众号第三方平台开发,零基础入门。想学我教你啊
Map,String,Json之間轉換
What are the Amazon evaluation terms?
Detailed explanation of pytoch's scatter function