Maison base de données tutoriel mysql 黄聪:Microsoft Enterprise Library 5.0 系列教程(五) Data Acc

黄聪:Microsoft Enterprise Library 5.0 系列教程(五) Data Acc

Jun 07, 2016 pm 03:43 PM
enterprise microsoft

企业库数据库访问模块通过抽象工厂模式 , 允许用户通过简单的配置选择不同的数据库作为程序的数据源 , 大大解决了切换数据库时带来的麻烦 . 因为我本机只安装了 SQL Server 2005, 所以在此只做 SQL 的演示 , 需要深究的朋友可以访问以下网站 : http://msdn.m

企业库数据库访问模块通过抽象工厂模式,允许用户通过简单的配置选择不同的数据库作为程序的数据源,大大解决了切换数据库时带来的麻烦.因为我本机只安装了SQL Server 2005,所以在此只做SQL的演示,需要深究的朋友可以访问以下网站:

http://msdn.microsoft.com/en-us/library/ff664408%28v=PandP.50%29.aspx

 

企业库数据库访问模块的几大功能:

1.        最简单的功能,通过ExecuteNonQuery.方法执行SQL语句.

2.        执行ExecuteDataSet,返回DataSet类型的数据集.

3.        执行ExecuteScalar,获取返回的第一行第一列的信息.

4.        执行存储过程.

5.        通过代码实现事务.

6.        通过DataSet更新数据库.

7.        返回值XML.

8.       将返回的数据对象化.

9.       异步访问数据库.


以上的功能我会在下面一一介绍
,测试程序我已打包,大家可以点击这里下载.

 

下面介绍如何使用Microsoft Enterprise Library 5.0中的数据库访问模块.

1.   首先创建一个测试数据库,创建数据库的SQL文件我打包在压缩包里了,大家可以点击上面的下载链接下载.执行完SQL文件后,可以看到我们创建好的TestDB数据库:

黄聪:Microsoft Enterprise Library 5.0 系列教程(五) Data Acc

2.   下载安装好MicrosoftEnterprise Library 5.0,然后在运行EntLibConfig.exe,选择Blocks菜单 ,单击 AddDatabase Settings .

黄聪:Microsoft Enterprise Library 5.0 系列教程(五) Data Acc

 

3.    配置好文件之后保存为App.config文件,并添加到创建好的应用程序中.并添加相应的引用,在此我不再多讲,大家下载我打包好的程序运行即可看到

 黄聪:Microsoft Enterprise Library 5.0 系列教程(五) Data Acc

4.      下面来介绍我在应用程序中实现的各个功能:

(1)     通过ExecuteNonQuery.方法执行SQL语句:      

///


/// 执行ExecuteNonQuery
///
privatevoid ExecuteNonQuery_Click(object sender, EventArgs e)
{
db.ExecuteNonQuery(CommandType.Text,
"INSERT INTO [College] ([CollegeID],[Name]) values (6,'体育学院')");
}

   

(2)    执行ExecuteDataSet,返回DataSet类型的数据集.

///


/// 执行ExecuteDataSet,返回College列表
///
///
privatevoid ExecuteDataSet_Click(object sender, EventArgs e)
{
string sql ="select * from College";
DbCommand dw
= db.GetSqlStringCommand(sql);

dataGridView1.DataSource
= db.ExecuteDataSet(dw).Tables[0];
}

 

 

(3)    执行ExecuteScalar,返回第一行第一列的值.

///


/// 执行ExecuteScalar,返回第一行第一列的值
///
///
privatevoid ExecuteScalar_Click(object sender, EventArgs e)
{
Database db
= DatabaseFactory.CreateDatabase("ConnectionString");

string sql ="select [Name] from College where [CollegeID] = 1";
DbCommand dc
= db.GetSqlStringCommand(sql);
string str ="获取的学院名称为:"+ (string)db.ExecuteScalar(dc);
MessageBox.Show(str);

sql
="select [CollegeID] from College where [CollegeID] = 1";
dc
= db.GetSqlStringCommand(sql);
str
="获取的学院ID为:"+ (int)db.ExecuteScalar(dc);
MessageBox.Show(str);
}

 

(4)    执行存储过程.

///


/// 执行存储过程
///
privatevoid StoredProcCommand_Click(object sender, EventArgs e)
{
DbCommand dc
= db.GetStoredProcCommand("usp_College_LoadByID");

db.AddInParameter(dc,
"@CollegeID", System.Data.DbType.Int32, 5);

dataGridView1.DataSource
= db.ExecuteDataSet(dc).Tables[0];
}

 

(5)    通过代码实现事务.

///


/// 事务
///
privatevoid Transaction_Click(object sender, EventArgs e)
{
DbCommand dc1
= db.GetStoredProcCommand("usp_College_Insert");

db.AddInParameter(dc1,
"@CollegeID", DbType.Int32, 7);
db.AddInParameter(dc1,
"@Name", DbType.String, "文旅学院");

DbCommand dc2
= db.GetStoredProcCommand("usp_College_Insert");

db.AddInParameter(dc2,
"@CollegeID", DbType.Int32, 7);
db.AddInParameter(dc2,
"@Name", DbType.String, "化工学院");

using (DbConnection conn = db.CreateConnection())
{
conn.Open();
DbTransaction trans
= conn.BeginTransaction();

try
{
//添加一个ID为7的学院
db.ExecuteNonQuery(dc1, trans);

//添加一个ID为7的学院,主键重复,事务将回滚
db.ExecuteNonQuery(dc2, trans);

//提交事务.
trans.Commit();
}
catch
{
//回滚
trans.Rollback();
}
conn.Close();
}

//查看数据库,数据未被添加,说明事务已回滚
ExecuteDataSet_Click(null, null);
}

 

(6)    通过DataSet更新数据库.

///


/// 通过DataSet更新数据库
///
privatevoid DataSetUpdate_Click(object sender, EventArgs e)
{
DataSet productsDataSet
=new DataSet();

string sql ="Select * From College";
DbCommand cmd
= db.GetSqlStringCommand(sql);

string CollegeTableName ="College";

//恢复原始数据
db.LoadDataSet(cmd, productsDataSet, CollegeTableName);

//获取数据表格
DataTable dTable = productsDataSet.Tables[CollegeTableName];

//添加一个新信息入DataSet中
DataRow addedRow = dTable.Rows.Add(newobject[] { 8, "外国语学院" });

//修改一个原有数据
dTable.Rows[0]["Name"] ="国教院";

//提供插入,更新,删除存储过程
DbCommand insertCommand = db.GetStoredProcCommand("usp_College_Insert");
db.AddInParameter(insertCommand,
"@CollegeID", DbType.Int32, "CollegeID", DataRowVersion.Current);
db.AddInParameter(insertCommand,
"@Name", DbType.String, "Name", DataRowVersion.Current);

DbCommand deleteCommand
= db.GetStoredProcCommand("usp_College_Delete");
db.AddInParameter(deleteCommand,
"@CollegeID", DbType.Int32, "CollegeID", DataRowVersion.Current);

DbCommand updateCommand
= db.GetStoredProcCommand("usp_College_Update");
db.AddInParameter(updateCommand,
"@CollegeID", DbType.Int32, "CollegeID", DataRowVersion.Current);
db.AddInParameter(updateCommand,
"@Name", DbType.String, "Name", DataRowVersion.Current);

//通过DataSet更新数据库
int rowsAffected = db.UpdateDataSet(productsDataSet, CollegeTableName, insertCommand, updateCommand, deleteCommand,
Microsoft.Practices.EnterpriseLibrary.Data.UpdateBehavior.Standard);

MessageBox.Show(
"影响的行数:"+ rowsAffected);
}

 

(7)    返回值XML化.

///


/// 返回值XML化
///
privatevoid ReturnXML_Click(object sender, EventArgs e)
{
//使用"FOR XML AUTO"参数使得SQL返回XML格式的信息
SqlDatabase sqldb = (SqlDatabase)DatabaseFactory.CreateDatabase("ConnectionString");

DbCommand cmd
= sqldb.GetSqlStringCommand("SELECT * FROM College FOR XML AUTO");
IEnumerable
string> productList;

using (var reader = sqldb.ExecuteXmlReader(cmd))
{
if (reader.IsStartElement())
{
var root
= (XElement)XNode.ReadFrom(reader);
productList
= root.Elements("CollegeID")
.Attributes(
"Name")
.Select(a
=> a.Value).ToArray();

MessageBox.Show(((XElement)root).ToString());
}
}
}

 

(8)    将返回的数据对象化.

///


/// DataAsObject
///
privatevoid DataAsObject_Click(object sender, EventArgs e)
{
//将返回的数据对象化
var results = db.ExecuteSprocAccessorCollege>("usp_College_LoadAll");

MessageBox.Show(results.ElementAt(
0).ToString());
}

 

 

(9)    异步访问数据库.

///


/// 异步访问数据库
///
privatevoid Async_Click(object sender, EventArgs e)
{
//创建新的数据库连接,属性必须添加:Asynchronous Processing=true
String connectionString =@"server=(local); database=TestDB; Integrated Security=true; Asynchronous Processing=true";
Database Sqldb
=new SqlDatabase(connectionString);
DbCommand cmd
= Sqldb.GetStoredProcCommand("usp_College_LoadbyID");
Sqldb.AddInParameter(cmd,
"@CollegeID", DbType.Int32, 1);

try
{
IAsyncResult result
= Sqldb.BeginExecuteReader(cmd, MyEndExecuteCallback, Sqldb);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

//当获取完毕执行该函数
privatevoid MyEndExecuteCallback(IAsyncResult result)
{
try
{
Database Sqldb
= (Database)result.AsyncState;
IDataReader reader
= db.EndExecuteReader(result);

College c
=new College((int)reader[0], (string)reader[1]);

MessageBox.Show(c.ToString());
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Supprimez facilement les bordures dans Microsoft Edge en trois étapes simplifiées Supprimez facilement les bordures dans Microsoft Edge en trois étapes simplifiées Sep 02, 2023 pm 02:57 PM

De nombreux utilisateurs ne sont pas satisfaits de la bordure blanche autour des pages Web dans Microsoft Edge. Ils pensent que c'est inutile et distrayant, et demandent à Microsoft de supprimer complètement les cadres de Microsoft Edge. Cela ressemble au dicton "ne réparez pas ce qui n'est pas cassé", mais Microsoft ne semble pas en avoir tenu compte. Bien sûr, il s'agit d'un navigateur Web populaire qui offre une variété de fonctionnalités, notamment un bloqueur de publicités intégré, une prévention du suivi et un gestionnaire de mots de passe. Cependant, certains utilisateurs peuvent constater que le navigateur comporte une bordure autour des pages Web. Cette bordure peut être gênante ou inesthétique, et il existe plusieurs façons de la supprimer. Au cours d'une longue conversation sur r/Edge, certains utilisateurs réguliers non internes ont découvert :

Principales différences entre Microsoft 365 Copilot, Bing Chat Enterprise et Copilot dans Windows Principales différences entre Microsoft 365 Copilot, Bing Chat Enterprise et Copilot dans Windows Sep 23, 2023 pm 03:57 PM

Actuellement, Microsoft propose trois assistants IA différents aux entreprises clientes : Microsoft365Copilot, BingChatEnterprise et Copilot sous Windows. Nous aimerions expliquer les différences entre ces trois options. CopilotinWindows : Copilot in Windows est un outil puissant qui vous aide à effectuer des tâches plus rapidement et plus facilement. Vous pouvez accéder de manière transparente à Copilot depuis la barre des tâches ou en appuyant sur Win+C, et il fournira de l'aide à côté de toute application que vous utilisez. Copilot sous Windows propose de nouvelles icônes, une nouvelle expérience utilisateur et BingChat. ce sera 2

Comment se connecter à un compte Microsoft sous Windows 10 Comment se connecter à un compte Microsoft sous Windows 10 Jan 01, 2024 pm 05:58 PM

Vous pouvez vous connecter avec un compte Microsoft dans le système win10, mais il y a encore beaucoup d'amis qui ne savent pas comment se connecter. Aujourd'hui, je vais vous présenter la méthode de connexion avec un compte Microsoft win10. Venez jeter un œil. . Comment se connecter au compte Microsoft Win10 : 1. Cliquez sur Démarrer dans le coin inférieur gauche et cliquez sur l'engrenage pour ouvrir les paramètres. 2. Recherchez ensuite « Compte » et cliquez pour ouvrir. 3. Après avoir entré le compte, cliquez sur « Comptes de messagerie et d'application » sur la gauche. 4. Cliquez ensuite sur « Ajouter un compte » à droite. 5. Après être entré dans l'interface du compte, de nombreuses options apparaîtront. Cliquez sur le premier « perspectives ». 6. Entrez votre numéro de compte dans la fenêtre du compte Microsoft qui apparaît. 7. Une fois que tout est terminé

Correctif : l'installation de ce package d'application n'est pas prise en charge Correctif : l'installation de ce package d'application n'est pas prise en charge Apr 13, 2023 am 11:43 AM

Microsoft distribue les applications UWP (Universal Windows Platform) et de bureau sous forme de .msixbundles. Applications et packages d’applications AppxBundle dans .Windows. Bien que les installateurs Msixbundle, Appx et AppxPackage soient des moyens fiables de charger des packages d'applications, plusieurs utilisateurs ne peuvent pas le faire. Pourquoi est-ce que je reçois une erreur « Le package d’application n’est pas pris en charge » ? Certains de nos lecteurs ont reçu le prix « Devrait

Correction de l'erreur « Votre compte est actuellement indisponible » dans OneDrive Correction de l'erreur « Votre compte est actuellement indisponible » dans OneDrive Sep 13, 2023 am 08:33 AM

Essayer de se connecter sous Windows ne fonctionne pas non plus. Cependant, une vérification du compte Microsoft a montré qu’il n’y avait aucun problème. Je peux me connecter et me déconnecter de mon compte Microsoft sous Windows et sur le Web et accéder à tous les services. Seul OneDrive semble être concerné. Le message d'erreur de Microsoft, comme la plupart du temps, n'est pas très utile car il est trop générique pour être d'une grande utilité. Il commence par la déclaration suivante : « Votre OneDrive ou votre profil peut être temporairement bloqué car il connaît un trafic inhabituellement important. Dans ce cas, le blocage sera supprimé après 24 heures. » Ceci est suivi d'une autre phrase, Autres raisons possibles. pour la suspension temporaire du compte sont répertoriés : "

Quelle est la version entreprise ? Quelle est la version entreprise ? Jan 12, 2021 am 10:55 AM

Enterprise est la version entreprise du système Windows. La version entreprise de Windows s'adresse principalement aux grandes et moyennes entreprises. Elle a ajouté une variété de fonctions pratiques telles que Direct Access, Windows To Go Creator, AppLokcer, BranchCache, etc.

Windows 12 sera une mise à niveau gratuite, aucun abonnement requis Windows 12 sera une mise à niveau gratuite, aucun abonnement requis Oct 21, 2023 am 11:17 AM

Microsoft ne fonctionne pas avec les versions par abonnement de Windows 12 et aucun frais ne vous sera facturé. Les gens parlent encore de Windows 12 basé sur un abonnement, une rumeur basée sur une chaîne de code dans une version préliminaire de Windows 11. Certaines personnes se demandent encore comment Microsoft envisage de faire de sa prochaine version de Windows un modèle d'abonnement. Il s'avère que la rumeur évoquée par certains médias concernait un « abonnement IoT Enterprise » basé sur Windows 11, et non Windows vNext. Pour ceux qui ne le savent pas, Windows24H2 ou WindowsvNext est le nom public de Windows 12. Certains médias gagneront

Quel logiciel est Microsoft SQL Server ? Quel logiciel est Microsoft SQL Server ? Feb 28, 2023 pm 03:00 PM

Microsoft SQL Server est un système de gestion de base de données relationnelle lancé par Microsoft. Il s'agit d'une plate-forme de base de données complète qui utilise des outils de business intelligence (BI) intégrés pour fournir une gestion des données au niveau de l'entreprise. Elle est facile à utiliser, a une bonne évolutivité et a un niveau élevé. degré d'intégration avec les logiciels associés. Avantages élevés. Le moteur de base de données SQL Server fournit des fonctions de stockage plus sécurisées et plus fiables pour les données relationnelles et les données structurées, permettant aux utilisateurs de créer et de gérer des applications de données hautement disponibles et performantes pour les entreprises.

See all articles