Heim Datenbank MySQL-Tutorial 黄聪: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());
}
}

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hauptunterschiede zwischen Microsoft 365 Copilot, Bing Chat Enterprise und Copilot in Windows Hauptunterschiede zwischen Microsoft 365 Copilot, Bing Chat Enterprise und Copilot in Windows Sep 23, 2023 pm 03:57 PM

Derzeit bietet Microsoft Unternehmenskunden drei verschiedene KI-Assistenten an: Microsoft365Copilot, BingChatEnterprise und Copilot in Windows. Wir möchten Ihnen die Unterschiede zwischen diesen drei Optionen erläutern. CopilotinWindows: CopilotinWindows ist ein leistungsstarkes Tool, mit dem Sie Aufgaben schneller und einfacher erledigen können. Sie können über die Taskleiste oder durch Drücken von Win+C nahtlos auf Copilot zugreifen und es bietet Hilfe neben jeder von Ihnen verwendeten Anwendung. Copilot in Windows bietet neue Symbole, ein neues Benutzererlebnis und BingChat. es wird 2 sein

Entfernen Sie ganz einfach Rahmen in Microsoft Edge in drei vereinfachten Schritten Entfernen Sie ganz einfach Rahmen in Microsoft Edge in drei vereinfachten Schritten Sep 02, 2023 pm 02:57 PM

Viele Benutzer sind mit dem weißen Rand um Webseiten in Microsoft Edge unzufrieden. Sie halten es für unnötig und ablenkend und fordern Microsoft auf, die Blenden von Microsoft Edge vollständig zu entfernen. Dies ähnelt dem Sprichwort „Repariere nicht, was nicht kaputt ist“, aber Microsoft scheint dies nicht berücksichtigt zu haben. Natürlich handelt es sich um einen beliebten Webbrowser, der eine Vielzahl von Funktionen bietet, darunter einen integrierten Werbeblocker, Tracking-Schutz und einen Passwort-Manager. Einige Benutzer stellen jedoch möglicherweise fest, dass der Browser Webseiten umrandet. Dieser Rand kann störend oder unansehnlich sein und es gibt verschiedene Möglichkeiten, ihn zu entfernen. In einem längeren Gespräch auf r/Edge stellten einige regelmäßige, nicht interne Benutzer fest:

Windows 12 wird ein kostenloses Upgrade sein, es ist kein Abonnement erforderlich Windows 12 wird ein kostenloses Upgrade sein, es ist kein Abonnement erforderlich Oct 21, 2023 am 11:17 AM

Microsoft arbeitet nicht mit abonnementbasierten Versionen von Windows 12 und es werden Ihnen keine Gebühren berechnet. Es wird immer noch darüber geredet, dass Windows 12 abonnementbasiert sei, ein Gerücht, das auf einer Codefolge in einem Vorschau-Build von Windows 11 basiert. Manche fragen sich immer noch, wie Microsoft seine nächste Windows-Version auf ein Abo-Modell umstellen will. Es stellte sich heraus, dass es sich bei dem in einigen Medien diskutierten Gerücht um ein „IoT Enterprise Subscription“ auf Basis von Windows 11 und nicht um Windows vNext handelte. Für diejenigen, die es nicht wissen: Windows24H2 oder WindowsvNext ist der öffentliche Name für Windows 12. Einige Medien werden gewinnen

So melden Sie sich unter Windows 10 bei einem Microsoft-Konto an So melden Sie sich unter Windows 10 bei einem Microsoft-Konto an Jan 01, 2024 pm 05:58 PM

Sie können sich mit einem Microsoft-Konto im Win10-System anmelden, aber es gibt immer noch viele Freunde, die nicht wissen, wie man sich anmeldet. Heute werde ich Ihnen die Methode vorstellen, sich mit einem Win10-Microsoft-Konto anzumelden . So melden Sie sich bei einem Win10-Microsoft-Konto an: 1. Klicken Sie unten links auf „Start“ und dann auf das Zahnrad, um die Einstellungen zu öffnen. 2. Suchen Sie dann nach „Konto“ und klicken Sie zum Öffnen. 3. Klicken Sie nach der Eingabe des Kontos links auf „E-Mail- und App-Konten“. 4. Klicken Sie dann rechts auf „Konto hinzufügen“. 5. Nach dem Aufrufen der Kontooberfläche werden viele Optionen angezeigt. Klicken Sie auf den ersten „Outlook“. 6. Geben Sie Ihre Kontonummer in das angezeigte Microsoft-Kontofenster ein. 7. Nachdem alles abgeschlossen ist

Fix: Die Installation dieses App-Pakets wird nicht unterstützt Fix: Die Installation dieses App-Pakets wird nicht unterstützt Apr 13, 2023 am 11:43 AM

Microsoft vertreibt UWP- (Universal Windows Platform) und Desktop-Anwendungen als .msixbundles. Apps und AppxBundle-App-Pakete in .Windows. Obwohl die Installationsprogramme Msixbundle, Appx und AppxPackage zuverlässige Möglichkeiten zum Querladen von App-Paketen darstellen, ist dies nicht für mehrere Benutzer möglich. Warum erhalte ich die Fehlermeldung „App-Paket wird nicht unterstützt“? Einige unserer Leser haben das „Sollte“ erhalten

Welche Version ist Enterprise? Welche Version ist Enterprise? Jan 12, 2021 am 10:55 AM

Enterprise ist die Enterprise-Version des Windows-Systems. Die Windows-Enterprise-Version richtet sich hauptsächlich an große und mittlere Unternehmen. Sie verfügt über eine Vielzahl praktischer Funktionen wie Direct Access, Windows To Go Creator, AppLokcer, BranchCache usw.

Behebung des Fehlers „Ihr Konto ist derzeit nicht verfügbar' in OneDrive Behebung des Fehlers „Ihr Konto ist derzeit nicht verfügbar' in OneDrive Sep 13, 2023 am 08:33 AM

Auch der Versuch, sich unter Windows anzumelden, funktioniert nicht. Eine Überprüfung des Microsoft-Kontos ergab jedoch, dass es keine Probleme damit gab. Ich kann mich unter Windows und im Web bei meinem Microsoft-Konto an- und abmelden und auf alle Dienste zugreifen. Nur OneDrive scheint betroffen zu sein. Die Fehlermeldung von Microsoft ist, wie so oft, nicht sehr hilfreich, da sie zu allgemein ist, um von großem Nutzen zu sein. Es beginnt mit der folgenden Aussage: „Ihr OneDrive oder Ihr Profil ist möglicherweise vorübergehend blockiert, weil dort ungewöhnlich viel Datenverkehr herrscht. In diesem Fall wird die Blockierung nach 24 Stunden aufgehoben.“ Darauf folgt ein weiterer Satz: „Andere mögliche Gründe“. für eine vorübergehende Kontosperrung sind aufgeführt: „

So laden Sie Clipchamp unter Windows 11 und Windows 365 herunter und installieren es So laden Sie Clipchamp unter Windows 11 und Windows 365 herunter und installieren es Aug 01, 2023 pm 11:34 PM

Bereits im September letzten Jahres haben wir Sie darüber informiert, dass Microsoft Clickchamp gerade gekauft hat und plant, daraus eine native Windows-Anwendung zu machen. Kürzlich haben wir erfahren, dass der Technologieriese aus Redmond die Software in der neuesten DevChannelInsider-Version hinzufügen wird. In Clipchamp sollen Nutzer einzigartigere Angebote finden, etwa eine Stock-Bibliothek mit mehr als einer Million lizenzfreien Videos, Audiospuren und Bildern, die zu Videos hinzugefügt werden können. Es gibt sogar einen Azure-basierten Text-to-Speech-Generator, der Voiceovers in mehr als 70 Sprachen erstellen kann. Clipchamp verbindet sich auch mit OneDrive, sodass Sie schnell und sicher zugreifen können

See all articles