LinqDataSource ........................................................................................................................... 8
Truy cp d liu vi web services ............................................................................................ 11 Truy cp d liu vi Ajax ......................................................................................................... 12 Cu hi n tp....................................................................................................................... 14 Ti liu tham kho ................................................................................................................ 14
Tng quan
Phn ln cc ng dng hin nay u s dng c s d liu. C nhiu cch thc truy cp d liu khc nhau trong cc cng ngh ca Microsoft nh ADO, RDO, DAO, ODBC. Tuy nhin t khi .NET Framework ra i th cng ngh ADO.NET c tch hp, ADO.NET cha cc lp cho php cc ng dng connect data sources (kt ni vi cc ngun d liu), execute commands (thc hin cc lnh), manage disconnected data (qun l d liu ngt kt ni). Vi ADO.NET ngi lp trnh c th vit t m lnh thao tc c s d liu hn so vi cc cng ngh trc trong cc ng dng client-server hoc cc ng dng trn desktop. Mt khc, trong ASP.NET t phin bn .NET Framework 2.0 tr ln c thm cc thao tc vi c s d liu m khng s dng ADO.NET nh SqlDataSource, LINQ hoc Profiles. Ngoi ra cc ng dng truy cp d liu ca .NET Framework cn c th truy nhp vo cc ngun d liu ngoi nh File, Stream, XML, Ajax, web services, WCF, data services. Trong hng dn ny, ta s to ra mt Web site project thao tc vi c s d liu. S dng Visual Studio 2008 to mt project Website. Trong to mt database tn l DB_TEST.MDF trong folder App_Data (Figure 1)
Figure 1. To database DB_TEST trong ng dng Website S dng database DB_TEST to 2 table HangHoa v KhoHang (Figure 2, Figure 3)
Microsoft Vietnam DPE Team | Bi s 2: Gii thiu cch thc truy cp d liu
Figure 3. Table KhoHang trong database DB_TEST To mt chui connection trong file cu hnh web.config t tn l ConnectionString cho php truy nhp vo c s d liu DB_TEST.MDF web.config
<configuration> <connectionStrings> <add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DB_TEST.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" /> </connectionStrings> // cc thit lp cu hnh khc </configuration>
Microsoft Vietnam DPE Team | Bi s 2: Gii thiu cch thc truy cp d liu
SqlCommand sql = new SqlCommand("SELECT * FROM HangHoa", conn); DataSet ds = new DataSet(); SqlDataAdapter sda = new SqlDataAdapter(sql); sda.Fill(ds,"HangHoa"); DataTable dt = ds.Tables["HangHoa"]; GridView1.DataSource = dt.DefaultView; GridView1.DataBind();
XML.aspx.cs
DataSet ds = new DataSet(); ds.ReadXml(Server.MapPath("Employee.xml")); DataTable dt = ds.Tables["Employees"]; GridView1.DataSource = dt.DefaultView; GridView1.DataBind();
Microsoft Vietnam DPE Team | Bi s 2: Gii thiu cch thc truy cp d liu
Microsoft Vietnam DPE Team | Bi s 2: Gii thiu cch thc truy cp d liu
Figure 7. La chn kt ni c s d liu trong SqlDataSource La chn table cn hin th d liu vo trong SqlDataSource (v d table KhoHang) sau thit lp GridView tr vo SqlDataSource va c to (Figure 8)
Microsoft Vietnam DPE Team | Bi s 2: Gii thiu cch thc truy cp d liu
5.1 LINQ c bn
V d, nu khng dng LINQ cho, cn ly tt c hng ha bt u bng B th ta c code sau:
DanhMucHangHoa dm = new DanhMucHangHoa(); List<HangHoaChiTiet> dshh = dm.LayDanhMucHangHoa(); List<HangHoaChiTiet> dmhh = new List<HangHoaChiTiet>(); foreach (HangHoaChiTiet hh in dshh) { if (hh.HangHoa_TenHang.ToString().StartsWith("B")) { dmhh.Add(hh); } }
5.1.1 Cch lm vic ca LINQ dng LINQ cn to ra mt LINQ expression theo ng quy tc. Gi tr tr v ca LINQ expression l mt i tng iterator thc thi giao din IEnumerable<T> Khi enumerable c gn vo iterator th LINQ thc hin. Microsoft Vietnam DPE Team | Bi s 2: Gii thiu cch thc truy cp d liu 7
5.1.2 C php LINQ C php ca LINQ tng t nh mt c php ca SQL nhng c trt t khc vi SQL.
dmhh = from hh in dshh ;
V d:
IEnumerable<HangHoaChiTiet> dmhh = from hh in dshh select hh.HangHoa_TenHang;
hoc
IEnumerable<HangHoaChiTiet> dmhh; dmhh = from hh in dshh orderby hh.HangHoa_TenHang select hh;
5.2 LinqDataSource
LinqDataSource l mt control c th thc hin nhiu tc v thm, sa, xa d liu mt cch t ng. Vi LinqDataSource khng cn vit code cho c vic cp nht, sa i d liu cng ging nh SqlDataSource. Trc ht cn phi to ra mt Linq to SQL class: File New File LINQ to SQL class (Figure 10)
Microsoft Vietnam DPE Team | Bi s 2: Gii thiu cch thc truy cp d liu
Figure 10. To ra mt LinqSqlDataContext cho php LinqDataSource truy nhp To ra m hnh LinqSqlDataContext cho php Linq ly d liu t database DB_TEST.MDF (Figure 11)
Figure 11. M hnh LinqSqlDataContext Thit lp cu hnh cho control Linqdatasource1: Chn Linqdatasource1 Configure Data Source Chn LinqSqlDataContext (Figure 12)
Microsoft Vietnam DPE Team | Bi s 2: Gii thiu cch thc truy cp d liu
Figure 12. LinqDataSource Configure Data Source Thc hin a d liu t LinqDataSource vo vo GridView (Figure 13)
Microsoft Vietnam DPE Team | Bi s 2: Gii thiu cch thc truy cp d liu
10
Figure 15. To web services trong ng dng Mc nh vi mi web service c to ra trong cc ng dng s dng Visual Studio u c sn phng thc HelloWorld. Phng thc ny tr v mt gi tr string l Hello World. Ta to thm mt phng thc DanhMucHangHoa truy cp vo d liu c trong ng dng. Cc phng thc trong web services c to Microsoft Vietnam DPE Team | Bi s 2: Gii thiu cch thc truy cp d liu 11
nh cc phng thc bnh thng trong ng dng nhng c thm thuc tnh ch nh n l mt web services k php l [WebMethod]. WebService.asmx.cs
[WebMethod] public DataSet DanhMucHangHoa() { SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].Connection String); DataSet ds = new DataSet(); SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM HangHoa", conn); sda.Fill(ds, "HangHoa"); return ds; }
Dng mt GridView nhn d liu t phng thc DanhMucHangHoa ca web services kim tra xem d liu nhn c nh th no. T Website Add New Item WebForm WebServices.aspx WebServices.aspx.cs
protected void Page_Load(object sender, EventArgs e) { WebService vs = new WebService(); GridView1.DataSource = vs.DanhMucHangHoa().Tables["HangHoa"].DefaultView; GridView1.DataBind(); }
Microsoft Vietnam DPE Team | Bi s 2: Gii thiu cch thc truy cp d liu
12
Ajax s dng XMLHttpRequest ca trnh duyt gi mt yu cu n web server thay cho Request truyn thng. D liu t web server tr v cho XMLHttpRequest c dng mt ti liu XML hoc mt ti liu dng Text. D liu ny c th c x l bi cc hm Javascript trc khi c tr li cho trnh duyt. Khc vi cch gi request response truyn thng th d liu t web server tr v cho client c trnh duyt hin th ngay m khng qua mt bc x l trung gian no na. S dng cc framework AJAX c sn gi Ajax. V d ta gi URL http://localhost:49163/WebSite/Adonet.aspx bng ajax ca th vin min ph prototype.js nh sau (Figure 17)
Figure 17. S dng AJAX AJAX c 2 dng d liu c tr v l responseText v responseXML. Ty tng mc ch s dng m c th la chn cch thc ly d liu v cho hp l. Mt khc, khi nhn c d liu t AJAX tr v c th x l trc khi hin th d liu cho ngi dng cui. Kt qu thc hin Ajax vi tham s URL: http://localhost:49163/WebSite/Adonet.aspx (Figure 18)
Microsoft Vietnam DPE Team | Bi s 2: Gii thiu cch thc truy cp d liu
13
8 Cu hi n tp
Cu hi: T khi c cc control SqlDataSource, LinqDataSource th c cn thit dng cc i tng ca ADO.NET (Connection, Command, Adapter, ) truy cp d liu na khng? Tr li: Vn cn thit v d cc i tng SqlDataSource, LinqDataSource rt linh hot v c th m ng hu ht cc chc nng nhng vn cha th cung cp cho nhu cu ngi dng nht l i vi nhng thao tc phc tp ln c s d liu.
Cu hi: Khi cn thc hin ly d liu t mt table trong c s d liu s dng ADO.NET ri a vo i tng DataTable th cn cc b thnh phn no sau y: A. Connection, Command, Adapter B. Connection, DataSet, Adapter C. Connection, DataTable, DataSet D. Command, Adapter, DataTable Tr li: p n B.
Microsoft Vietnam DPE Team | Bi s 2: Gii thiu cch thc truy cp d liu
14