Rumah pangkalan data tutorial 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());
}
}

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Perbezaan utama antara Microsoft 365 Copilot, Bing Chat Enterprise dan Copilot dalam Windows Perbezaan utama antara Microsoft 365 Copilot, Bing Chat Enterprise dan Copilot dalam Windows Sep 23, 2023 pm 03:57 PM

Pada masa ini, Microsoft menawarkan tiga pembantu AI berbeza kepada pelanggan perusahaan: Microsoft365Copilot, BingChatEnterprise dan Copilot dalam Windows. Kami ingin menerangkan perbezaan antara ketiga-tiga pilihan ini. CopilotinWindows: Copilot dalam Windows ialah alat berkuasa yang membantu anda menyelesaikan tugasan dengan lebih cepat dan lebih mudah. Anda boleh mengakses Copilot dengan lancar dari bar tugas atau dengan menekan Win+C, dan ia akan memberikan bantuan di sebelah mana-mana aplikasi yang anda gunakan. Copilot dalam Windows menampilkan ikon baharu, pengalaman pengguna baharu dan BingChat. ia akan menjadi 2

Alih keluar sempadan dalam Microsoft Edge dengan mudah dalam tiga langkah mudah Alih keluar sempadan dalam Microsoft Edge dengan mudah dalam tiga langkah mudah Sep 02, 2023 pm 02:57 PM

Ramai pengguna tidak berpuas hati dengan sempadan putih di sekeliling halaman web dalam Microsoft Edge. Mereka fikir ia tidak perlu dan mengganggu, dan mereka meminta Microsoft untuk mengalih keluar bezel Microsoft Edge sepenuhnya. Ini sama dengan pepatah "jangan betulkan apa yang tidak rosak", tetapi Microsoft nampaknya tidak mengambil kira perkara ini. Sudah tentu, ia adalah penyemak imbas web popular yang menawarkan pelbagai ciri, termasuk penyekat iklan terbina dalam, pencegahan penjejakan dan pengurus kata laluan. Walau bagaimanapun, sesetengah pengguna mungkin mendapati bahawa penyemak imbas mempunyai sempadan di sekeliling halaman web. Sempadan ini boleh mengganggu atau tidak sedap dipandang, dan terdapat beberapa cara untuk mengalihkannya. Dalam perbualan yang panjang di r/Edge, beberapa pengguna biasa bukan dalaman menemui,

Windows 12 akan menjadi peningkatan percuma, tiada langganan diperlukan Windows 12 akan menjadi peningkatan percuma, tiada langganan diperlukan Oct 21, 2023 am 11:17 AM

Microsoft tidak berfungsi dengan versi berasaskan langganan Windows 12 dan anda tidak akan dikenakan sebarang bayaran. Orang ramai masih bercakap tentang Windows 12 berasaskan langganan, khabar angin berdasarkan rentetan kod dalam binaan pratonton Windows 11. Sesetengah orang masih tertanya-tanya bagaimana Microsoft merancang untuk menjadikan versi Windows mereka yang seterusnya sebagai model langganan. Ternyata khabar angin yang dibincangkan dalam beberapa media adalah "Langganan Perusahaan IoT" berdasarkan Windows 11, bukan Windows vNext. Bagi mereka yang tidak tahu, Windows24H2 atau WindowsvNext ialah nama awam untuk Windows 12. Beberapa media akan menang

Bagaimana untuk log masuk ke akaun Microsoft pada Windows 10 Bagaimana untuk log masuk ke akaun Microsoft pada Windows 10 Jan 01, 2024 pm 05:58 PM

Anda boleh log masuk dengan akaun Microsoft dalam sistem win10, tetapi masih ramai rakan yang tidak tahu bagaimana untuk log masuk. Hari ini saya akan membawakan kepada anda kaedah log masuk dengan akaun Microsoft win10 Mari lihat . Cara log masuk ke akaun microsoft win10: 1. Klik Mula di sudut kiri bawah dan klik gear untuk membuka tetapan. 2. Kemudian cari "Akaun" dan klik untuk membuka. 3. Selepas memasukkan akaun, klik "Akaun E-mel dan Apl" di sebelah kiri. 4. Kemudian klik "Tambah Akaun" di sebelah kanan. 5. Selepas memasuki antara muka akaun, banyak pilihan akan muncul. Klik "outlook" pertama. 6. Masukkan nombor akaun anda dalam tetingkap akaun Microsoft yang muncul. 7. Selepas semua selesai, anda boleh

Betulkan: Pemasangan pakej apl ini tidak disokong Betulkan: Pemasangan pakej apl ini tidak disokong Apr 13, 2023 am 11:43 AM

Microsoft mengedarkan UWP (Universal Windows Platform) dan aplikasi desktop sebagai .msixbundles. Pakej aplikasi dan AppxBundle dalam .Windows. Walaupun pemasang Msixbundle, Appx dan AppxPackage adalah cara yang boleh dipercayai untuk memuatkan pakej aplikasi, berbilang pengguna tidak dapat berbuat demikian. Mengapa saya mendapat ralat "Pakej apl tidak disokong"? Beberapa pembaca kami telah menerima "Sepatutnya

Betulkan ralat 'Akaun anda tidak tersedia pada masa ini' dalam OneDrive Betulkan ralat 'Akaun anda tidak tersedia pada masa ini' dalam OneDrive Sep 13, 2023 am 08:33 AM

Cuba log masuk ke Windows juga tidak berfungsi. Walau bagaimanapun, semakan pada akaun Microsoft menunjukkan bahawa tiada masalah dengannya. Saya boleh log masuk dan keluar daripada akaun Microsoft saya pada Windows dan web dan saya boleh mengakses semua perkhidmatan. Hanya OneDrive nampaknya terjejas. Mesej ralat Microsoft, seperti kebanyakan masa, tidak begitu membantu kerana ia terlalu generik untuk digunakan. Ia bermula dengan pernyataan berikut: "OneDrive atau profil anda mungkin disekat buat sementara waktu kerana ia mengalami jumlah trafik yang luar biasa besar. Dalam kes ini, sekatan akan dialih keluar selepas 24 jam" Ini diikuti dengan ayat lain, Sebab-sebab lain yang mungkin untuk penggantungan akaun sementara disenaraikan: "

enterprise是什么版本 enterprise是什么版本 Jan 12, 2021 am 10:55 AM

enterprise是Windows系统企业版,Windows企业版主要面向大中型企业,其加入了Direct Access、Windows To Go Creator、AppLokcer、BranchCache等多种实用功能。

Bagaimana untuk memuat turun dan memasang Clipchamp pada Windows 11 dan Windows 365 Bagaimana untuk memuat turun dan memasang Clipchamp pada Windows 11 dan Windows 365 Aug 01, 2023 pm 11:34 PM

Kembali pada September tahun lepas, kami memaklumkan anda bahawa Microsoft baru sahaja membeli Clickchamp dan merancang untuk menjadikannya aplikasi asli Windows. Baru-baru ini, kami mendapati bahawa gergasi teknologi Redmond akan menambah perisian dalam versi DevChannelInsider terkini. Dalam Clipchamp, pengguna dikatakan mencari lebih banyak produk unik, seperti perpustakaan saham yang dipenuhi dengan lebih daripada sejuta video tanpa royalti, trek audio dan imej yang boleh ditambah pada video. Malah terdapat penjana teks-ke-pertuturan berkuasa Azure yang mampu mencipta alih suara dalam lebih daripada 70 bahasa. Clipchamp juga bersambung dengan OneDrive, yang bermaksud anda boleh dengan cepat dan selamat

See all articles