自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

PDF.NET數(shù)據(jù)開發(fā)框架實(shí)體類操作實(shí)例之在PostgreSQL中操作

數(shù)據(jù)庫 其他數(shù)據(jù)庫 數(shù)據(jù)庫運(yùn)維 PostgreSQL
本篇是PDF.NET數(shù)據(jù)開發(fā)框架實(shí)體類操作實(shí)例之在MySQL中操作的姊妹篇,兩者使用了同一個測試程序,不同的只是使用的類庫和數(shù)據(jù)庫不同,下面說說具體的使用過程。

本篇是PDF.NET數(shù)據(jù)開發(fā)框架實(shí)體類操作實(shí)例之在MySQL中操作的姊妹篇,兩者使用了同一個測試程序,不同的只是使用的類庫和數(shù)據(jù)庫不同,下面說說具體的使用過程。

1,首先在App.config文件中配置數(shù)據(jù)庫連接字符串:

  1. <?xml version="1.0" encoding="utf-8" ?> 
  2. <configuration> 
  3.   <connectionStrings> 
  4.     <!--<add name ="default" connectionString ="server=192.168.50.XX;User Id=root;password=XXXX;database=test" providerName="PWMIS.DataProvider.Data.MySQL,PWMIS.MySqlClient"/>--> 
  5.     <add name ="default" connectionString ="server=127.0.0.1;User Id=postgres;password=XXXX;database=Test" providerName="PWMIS.DataProvider.Data.PostgreSQL,PWMIS.PostgreSQLClient"/> 
  6.   </connectionStrings> 
  7. </configuration> 

2,定義一個用戶實(shí)體類:

  1. /*  
  2.  * PDF.NET 數(shù)據(jù)開發(fā)框架  
  3.  * http://www.pwmis.com/sqlmap  
  4.  */ 
  5. using System;  
  6. using System.Collections.Generic;  
  7. using System.Linq;  
  8. using System.Text;  
  9. using PWMIS.DataMap.Entity;  
  10.  
  11. namespace TestMySqlEntity  
  12. {  
  13.     class User:EntityBase   
  14.     {  
  15.         public User()  
  16.         {  
  17.             TableName = "tb_user";  
  18.             PrimaryKeys.Add("ID");//主鍵  
  19.             //IdentityName = "ID";//標(biāo)識,自增  
  20.             PropertyNames = new string[] {"ID","Name","Age" };  
  21.             PropertyValues = new object[PropertyNames.Length];  
  22.  
  23.         }  
  24.  
  25.         public int ID  
  26.         {  
  27.             get { return getProperty<int>("ID"); }  
  28.             set { setProperty("ID", value); }  
  29.         }  
  30.  
  31.         public int Age  
  32.         {  
  33.             get { return getProperty<int>("Age"); }  
  34.             set { setProperty("Age", value); }  
  35.         }  
  36.  
  37.         public string Name  
  38.         {  
  39.             get { return getProperty<string>("Name"); }  
  40.             set { setProperty("Name", value,50); }  
  41.         }  
  42.     }  
  43. }  

與MySQL中定義的用戶實(shí)體類不同,下面這一行代碼被注釋掉了:

 //IdentityName = "ID";//標(biāo)識,自增
雖然PostgreSQL有“自增”列,但無法直接取到剛插入的這個自增值,所以需要注釋它。

3,根據(jù)這個實(shí)體類,我們?nèi)ySQL定義一個用戶表:tb_user,具體過程省略,注意字段“ID”仍然使用自增列(在PostgreSQL中是 serial 類型,但編輯表類型的時候,發(fā)現(xiàn)字段是整數(shù)類型,不過有了默認(rèn)值:nextval('"User_ID_seq"'::regclass))。

4,編寫ORM實(shí)體類操作的測試代碼:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using PWMIS.DataMap.Entity;  
  6. using System.Data;  
  7.  
  8. namespace TestMySqlEntity  
  9. {  
  10.     class Program  
  11.     {  
  12.         static void Main(string[] args)  
  13.         {  
  14.             PWMIS.DataProvider.Data.AdoHelper db = PWMIS.DataProvider.Adapter.MyDB.GetDBHelperByConnectionName("default");  
  15.             //PWMIS.DataProvider.Data.AdoHelper db = PWMIS.DataProvider.Adapter.MyDB.Instance ;  
  16.             //MySQL 存儲過程測試;  
  17.             //參數(shù)名字可以加 @符號,例如 @pAge1  
  18.             //DataSet ds1= db.ExecuteDataSet("proc_user1",   
  19.             //    CommandType.StoredProcedure,  
  20.             //    new System.Data.IDataParameter[] { db.GetParameter ("@pAge1",22) });  
  21.  
  22.               
  23.             //  
  24.             User u = new User();  
  25.  
  26.             //*************構(gòu)建 OQL 查詢表達(dá)式 ******* begin ************  
  27.             //查詢實(shí)體集合  
  28.             //使用 OQLCompare 對象作為條件  
  29.             //OQL q = OQL.From(u).Select().Where(new OQLCompare(u).Comparer(u.Age, OQLCompare.CompareType.NoSmaller, 15)).END ;  
  30.  
  31.             OQL q = new OQL(u);  
  32.             //使用OQL2 作為條件對象  
  33.             q.Select().Where(q.Condition.AND(u.Age, ">=", 15)).OrderBy (u.Age ,"asc");  
  34.             //使用 QueryParameter 數(shù)組作為條件,適合于多個并列的And條件  
  35.             //q.Select().Where(new QueryParameter[] { new QueryParameter("Age", PWMIS.Common.enumCompare.NoSmaller, 15) }).OrderBy(u.Age, "asc");   
  36.             Console.WriteLine("OQL to SQL:\r\n"+q.ToString ());  
  37.  
  38.               
  39.             //*************構(gòu)建 OQL 查詢表達(dá)式 ******* end ************  
  40.  
  41.             //查詢實(shí)體列表  
  42.             var result = EntityQuery<User>.QueryList(q);  
  43.             Console.WriteLine("查詢實(shí)體集合成功,數(shù)量:"+result .Count );  
  44.  
  45.             Console.WriteLine("\r\nExecuted SQL Text:\r\n{0}\r\n", PWMIS.DataProvider.Data.CommandLog.Instance.CommandText);  
  46.  
  47.             //查詢單個實(shí)體  
  48.             u.Name = "zhang san";  
  49.             q.Select().Where(u.Name);  
  50.             Console.WriteLine("OQL to SQL:\r\n" + q.ToString());  
  51.             User u1 = EntityQuery<User>.QueryObject(q);  
  52.             if (u1 != null)  
  53.                 Console.WriteLine("查詢單個實(shí)體成功!");  
  54.  
  55.             Console.WriteLine("\r\nExecuted SQL Text:\r\n{0}\r\n", PWMIS.DataProvider.Data.CommandLog.Instance.CommandText);  
  56.  
  57.  
  58.             //直接使用EntityQuery<T>.Instance 屬性的插入、修改、刪除方法  
  59.             u.Name = "li si3";  
  60.             u.Age = 15;  
  61.             if (EntityQuery<User>.Instance.Insert(u) > 0)  
  62.                 Console.WriteLine("插入實(shí)體成功!"); //將自動為ID屬性賦值  
  63.  
  64.             Console.WriteLine("\r\nExecuted SQL Text:\r\n{0}\r\n", PWMIS.DataProvider.Data.CommandLog.Instance.CommandText);  
  65.  
  66.             //PostgreSQL 沒有 @@IDENTITY 變量,所以無法拿到剛才的自增值,注釋掉下面的修改方法  
  67.             //u.Age = 25;  
  68.             //if (EntityQuery<User>.Instance.Update (u) > 0)  
  69.             //    Console.WriteLine("修改實(shí)體成功!");  
  70.  
  71.             //Console.WriteLine("\r\nExecuted SQL Text:\r\n{0}\r\n", PWMIS.DataProvider.Data.CommandLog.Instance.CommandText);  
  72.  
  73.             User u2 = new User();  
  74.             u2.Name = "wang wu";  
  75.             u2.Age = 20;  
  76.  
  77.             //使用EntityQuery<T> 的實(shí)例對象方法更新實(shí)體  
  78.             //只會更新賦值過的屬性值  
  79.             EntityQuery<User> eq = new EntityQuery<User>(u2);  
  80.             if (eq.SaveAllChanges() > 0)  
  81.                 Console.WriteLine("更新實(shí)體成功!");  
  82.  
  83.             Console.WriteLine("\r\nExecuted SQL Text:\r\n{0}\r\n", PWMIS.DataProvider.Data.CommandLog.Instance.CommandText);  
  84.  
  85.             Console.Read();  
  86.         }  
  87.     }  

 注意上面代碼中的這一部分:

 //PostgreSQL 沒有 @@IDENTITY 變量,所以無法拿到剛才的自增值,注釋掉下面的修改方法
雖然注釋了修改實(shí)體的方法,但只要手工給ID屬性設(shè)置值,仍然可以修改實(shí)體。

5,編譯運(yùn)行,得到下面的結(jié)果:

  1. --OQL to SQL:  
  2. SELECT [ID],[Name],[Age]  
  3. FROM [tb_user]  
  4.    Where  [Age] >= @Age0  
  5.         Order by [Age] asc  
  6. --查詢實(shí)體集合成功,數(shù)量:8  
  7.  
  8. --Executed SQL Text:  
  9. SELECT "ID","Name","Age"  
  10. FROM "tb_user"  
  11.    Where  "Age" >= @Age0  
  12.         Order by "Age" asc  
  13.  
  14. --OQL to SQL:  
  15. SELECT [ID],[Name],[Age]  
  16. FROM [tb_user]  
  17.    Where [Name]=@Name  
  18.  
  19. --查詢單個實(shí)體成功!  
  20.  
  21. --Executed SQL Text:  
  22. SELECT "ID","Name","Age"  
  23. FROM "tb_user"  
  24.    Where "Name"=@Name  
  25.  
  26.  
  27. --插入實(shí)體成功!  
  28.  
  29. --Executed SQL Text:  
  30. INSERT INTO "tb_user"("Name","Age") VALUES (@P0,@P1)  
  31.  
  32. --更新實(shí)體成功!  
  33.  
  34. --Executed SQL Text:  
  35. INSERT INTO "tb_user"("Name","Age") VALUES (@P0,@P1) 

注意:在PostgreSQL中,SQL語句中的字段名要使用雙引號。

原文鏈接:http://www.cnblogs.com/bluedoctor/archive/2011/04/26/2029005.html

【編輯推薦】

  1. 用C++連接MySQL等數(shù)據(jù)庫一
  2. 用C++連接MySQL等數(shù)據(jù)庫二
  3. 這些SQLite與SQL差異問題,你遇到過嗎
  4. 如何將AS3連接到MySQL數(shù)據(jù)庫上
  5. PDF.NET數(shù)據(jù)開發(fā)框架實(shí)體類操作實(shí)例之在MySQL中操作
責(zé)任編輯:艾婧 來源: 博客園
相關(guān)推薦

2011-04-26 14:21:50

MySQL

2011-05-31 10:38:14

PostgreSQL

2009-11-12 15:47:14

ADO.NET更新數(shù)據(jù)

2011-06-01 15:45:28

實(shí)體類序列化

2009-09-10 10:09:46

LINQ to SQL

2009-12-28 16:57:40

ADO .NET 類

2009-08-21 17:41:07

.NET平臺構(gòu)成

2011-08-08 15:56:18

iPhone 震動 NSUserDefa

2009-08-20 11:07:07

C#共享內(nèi)存

2010-01-05 15:43:13

.NET Framew

2010-04-19 08:51:30

2023-03-17 23:08:36

PostgreSQL數(shù)據(jù)庫

2011-07-07 16:42:38

iPhone Sqlite3 數(shù)據(jù)庫

2009-07-30 13:28:55

ASP.NET中的ja

2011-08-03 16:22:05

Objective-C CodeBlocks

2024-05-16 08:28:20

類型處理器D3BootJSON

2009-09-02 19:12:25

重新分發(fā).NET框架

2009-12-29 10:26:43

ADO.NET實(shí)體框架

2020-10-21 08:05:45

Scrapy

2009-12-22 14:15:08

ADO.Net處理數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號