200 likes | 540 Views
ADO.NET. Lecture 3 SE303-Database programming. Агуулга. ADO.NET – ийн тухай ADO.NET архитектур ADO.N ET хэрэглээ Уяатай загвар Салангид загвар. ADO.NET- ийн тухай. ADO.NET – классуудын олонлог Өгөгдлийн эх үүсвэр – өгөгдлийн сан, XML файл, текст файл
E N D
ADO.NET Lecture 3 SE303-Database programming
Агуулга • ADO.NET – ийн тухай • ADO.NET архитектур • ADO.NET хэрэглээ • Уяатай загвар • Салангид загвар
ADO.NET-ийн тухай • ADO.NET – классуудын олонлог • Өгөгдлийн эх үүсвэр – өгөгдлийн сан, XML файл, текст файл • Өгөгдөл нийлүүлэгч – тусгай API • Нийлүүлэгч – өгөгдлийн санд зориулсан - ерөнхий (OLE DB or ODBC) Open Database Connectivity Object Linking and Embedding, Database
ADO.NET-ийн архитектур Өгөгдөлд хандах хэлбэр Command Object “Select * from DB” SQL connection Data Access Layer .NET Managed Provider .NET Data Provider ODBC OLE DB ODP.NET MySQL MS SQL Server Oracle MS Access
ADO.NET-ийн архитектур • OLE DB нийлүүлэгч • Захиалагч болон нийлүүлэгч - СОМ объектууд • .NET - ийн өгөгдөл нийлүүлэгч – OLE DB • Сул тал – СОМ объектуудтай харилцах шаардлагаар хяналттай ба хяналтгүй кодын хооронд сэлгээ хийгдэх учраас хурд муутай. OLE DB нийлүүлэгч Өгөгдлийн эх үүсвэр Өгөгдөл захиалагч .NET SQL Client-ээс 10 дахин бага хурдтай
ADO.NET-ийн архитектур • .NET нийлүүлэгч • Завсарын гүүр холболт ашиглахгүйгээр шууд өгөгдөлд хандах • Өндөр хурдтай • Нэмэлт боломжуудыг агуулсан
ADO.NET-ийн архитектур • Өгөгдөлд хандах класс • DbConnection – өгөгдлийн эх үүсвэр рүү холболт тогтооно. • DbCommand – асуулга буюу команд илгээхэд ашиглана. • DbDataReader – эх үүсвэрээс нэг чиглэлийн уншилт хийнэ. • DbDataAdapter – Dataset болон өгөгдөл нийлүүлэгчийн хооронд ажиллана. Хийсвэр классууд учраас хөгжүүлэгч тухайлсан хувилбарыг хөгжүүлэх үүрэгтэй.
ADO.NET-ийн архитектур • Нийлүүлэгчийн үйлдвэр – Provider factory • DbProviderFactories->GetFactoryClassesсистемд бүртгэгдсэн өгөгдөл нийлүүлэгчдийн жагсаалтыг харна. • Нийлүүлэгчдийг ашиглахын тулд тохирох объектуудыг үүсгэх хэрэгтэй. OLE DB OleDbConnection ODBC OdbcConnection OracleClientOracleConnection SqlClientSqlConnection
ADO.NET-ийн архитектур //System.Data.Common namespace хэрэгтэй. DbProviderFactory factory; string provider = “System.Data.SqlClient”; string connstr = “Data Source=MySERVER; Initial Catalog=films; UserID=filmsadmin; Password=pswd;”; //SQL Server-т зориулсан үйлдвэр объект гарган авах factory = DbProviderFactories.GetFactory(provider); //Холболтын объект үүсгэх. using нь холболтыг найдвартай хаадаг. using (DbConnectionconn = factory.CreateConnection()) { conn.ConnectionString = connstr; try { conn.Open(); DbCommandcmd = factory.CreateCommand(); //командын объект cmd.CommandText = “SELECT * FROM movies WHERE movie_ID=8”; cmd.Connection = conn; DbDataReaderdr; dr = cmd.ExecuteReader(); dr.Read(); MessageBox.Show((string)dr[“movie_Title”]); conn.Close; } catch (DbException ex) {MessageBox.Show(ex.ToString()); } catch (Exception ex) {MessageBox.Show(ex.ToString()); } finally {conn.Close();} } string provider = “System.Data.ODBC”; string connstr = “DSN=movies; Database=films”;
ADO.NET-ийн хэрэглээ • ADO.NET нь өгөгдөл хандах • Уяатай – өгөгдлийг нэг чиглэлд, унших байдлаар болосвруулах бөгөөд энэ үед өгөгдлийн эх үүсвэртэй байнгын холболттой • Салангид – өгөгдлийн эх үүсвэрээс өгөгдлийг нэг удаа уншаад санах ойн хүснэгтэд боловсруулалт явагдана
ADO.NET-ийн хэрэглээ • Уяатай загвар • DataReaderобъект болон өгөгдлийн эх үүсвэрийн хооронд байнгын идэвхитэй холболттой. • Онцлог шинж: Нэг чиглэлд зөвхөн уншигдах байдлаар бичлэгийг нэг нэгээр нь уншдаг. DataReader Read () command ExecuteReader() connection connection string
ADO.NET-ийн хэрэглээ • Уяатай загвар • DataReader– тэй ажиллах 1. Холбогч мөрийг дамжуулж, холболтын объектыг үүсгэнэ. 2. Өгөгдлийг унших SQL командыг бэлдэнэ. 3. Командын объектыг үүсгэнэ. /холбогч мөр, SQL асуулга, транзакцын объект/ 4. Command.ExecuteReader()методыг дуудаж DataReaderобъект үүсгэнэ
ADO.NET-ийн хэрэглээ Жишээ: Өгөгдлийг Listbox-д нэмэх // (1) Холболт үүсгэх DbProviderFactory factory; Sql Connection conn = new.SqlConnection(connstr); conn.Open(); // (2) Асуулга string sql = “SELECT movie_Title FROM movies ORDER BY movie=Year”; //(3) Командын объект үүсгэх SqlCommandcmd = new SqlCommand(sql, conn); DbDataReaderrdr; // (4) DataReader үүсгэх rdr = cmd.ExecuteReader(CommandBehavior.Closeconnection) while (rdr.Read()) { listBox1.Items.Add(rdr[“movie_Title”]); //ListBox-г дүүргэх } Rdr.Close(); //DataReaderобъектыг үргэлж хаах хэрэгтэй
ADO.NET-ийн хэрэглээ • Салангид загвар • Зөвхөн өгөгдлийг эх үүсвэрээс унших, бичих үед л холболт хийж бусад тохиолдолд “салангид” ажиллана. • Өгөгдлийг клиент машин дээр байрлуулснаар нөөцүүдийг хэмнэж, өгөгдөл боловсруулах үүргээс чөлөөлнө. • Нөөцүүд: серверийн санах ой, холболт боловсруулалт гэх мэт • Муу тал: - өгөгдлийг эхлэн татахад хугацаа орно • - өгөгдлийг хадгалахад санах ой зарцуулна
ADO.NET-ийн хэрэглээ Жишээ:DataTableүүсгэх, түүнийг өгөгдлөөр дүүргэх String sql = “SELECT movie_Title, movie_Year FROM movies”; string connstr = “Data Source=MySERVER; Initial Catalog=films; UserID=filmsadmin; Password=pswd;”; // (1) data adapter объект үүсгэх SqlDataAdapterda = new SqlDataAdapter(sql,connstr); conn.Open(); // (2) dataset үүсгэх DataSetds = ds.Tables(“movies”); //(3) dataset дотор хүснэгт үүсгэж өгөгдлөөр дүүргэх da.Fill(ds, “movies”); DataTabledt = ds.Tables(“movies”); // (4) listbox-д киноны нэрийг оруулах for (inti=0; i<dt.Rows.Count; i++) { DataRow row = dt.Rows[i]; listBox1.Items.Add(row[“movie_Title”]); }
ADO.NET холбогч классууд IDbConnectionинтерфейсийн гишүүд
ADO.NET холбогч мөр • Өгөгдлийн эх үүсвэр лүү хандахад шаардлагатай хэрэглэгчийн нэр, нууц үг зэрэг мэдээллийг агуулна. String Path=Server.MapPath(“/data/movies.mdb”); Data Source= … “+path+”;””DSN=movies;”
ADO.NET холбогч мөр • Холбогч мөрийг параметр болгон дамжуулж өгөгдлийн сан руу холболт хийдэг. string cn = “Data Source=MySERVER; Initial Catalog=films; UserID=filmsadmin; Password=pswd;”; SqlSonnectionconn= new SqlConnection(cn); conn.Open(); //Холболтыг нээх
ADO.NET холбогч мөр • Холбогч мөрийг ConnectionStringBuilderклассаар үүсгэж болно. SqlConnectionStringBuildersqlBldr = new SqlSonnectionStringBuilder(); sqlBldr.DataSource = “MYSERVER”; //эсвэл sqlBldr[“DataSource”] = “MYSERVER”; sqlBldr.Password= “pswd”; sqlBldr.UserID= “filmsadmin”; sqlBldr.InitialCatalog= “films”; SqlSonnectionconn = new SqlConnection(sqlBldr.ConnectionString); conn.Open();
HomeWork • ADO.NET-ийн 2 загварын талаар дэлгэрүүлэн унших • Лабораторийн ажил: • MS SQL Server дээр 3-4 хүснэгттэй бааз үүсгэн, C#-аас холбогдох.