Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

.NET Framework Class Library (FCL).NET 1.0 Krizsán Zoltán 1.0.

Hasonló előadás


Az előadások a következő témára: ".NET Framework Class Library (FCL).NET 1.0 Krizsán Zoltán 1.0."— Előadás másolata:

1 .NET Framework Class Library (FCL).NET 1.0 Krizsán Zoltán 1.0

2 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 2 Főbb tulajdonságok Objektum orientált API. Egységes fejlesztői könytár. Több, mint 7000 típus (osztály, struktúra, interfész, felsorolt, delegátum). Hierarchikusan szervezett névterek (kb. 100). C# - using, VB – imports.

3 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 3 Esemény vezérelt A program vár, hogy egy esemény bekövetkezzen, amit lekezel. Firing an event – eseményt generál az objektum Listener – objektum, ami vár az eseményre Event handler – módszer, amely lekezeli az eseményt

4 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 4 Kategóriák 100 névtér I/O (file, stream) Collection (hash táblák, din. tömbök) Reguláris kifejezések InternetAdatbázisReflekcióDiagnosztikaSzálkezelés

5 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 5 IO - Főbb jellemzők System.IO: 30 osztály, 1 struktúra, 3 delegátum, 7 enum BinaryReader, BinaryWriter, Directory, File, FileInfo, FileStream, IOException, MemoryStream, Path, Stream, StreamWriter, StreamReader, TextReader, TextWriter

6 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 6 File rendszer fv.-ek FileSystemInfo (absztrakt), csak példány fv.-ek –DirectoryInfo –FileInfo Directory (statikus fv.-ek) File (statikus fv.-ek) Path Sztringeken manipulál, amelyek fájlra, vagy jegyzékre irányulnak. Nem kell hogy létezzen a cél.

7 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 7 Példa – File rendszer DirectoryInfo dir = new DirectoryInfo(Directory.GetCurrentDirectory()); DirectoryInfo dir = new DirectoryInfo(Directory.GetCurrentDirectory()); Console.WriteLine( "Current Dir: {0}", dir.FullName); Console.WriteLine( "Current Dir: {0}", dir.FullName); foreach (FileInfo f in dir.GetFiles()) { Console.WriteLine("{0,-14}{1,10}{2,20}", f.Name, f.Length, f.LastWriteTime); Console.WriteLine("{0,-14}{1,10}{2,20}", f.Name, f.Length, f.LastWriteTime);} Process p = Process.GetCurrentProcess(); Process p = Process.GetCurrentProcess(); ProcessModule pm = p.MainModule; ProcessModule pm = p.MainModule; string s = pm.ModuleName; string s = pm.ModuleName; Console.WriteLine( Path.GetFullPath(s) ); Console.WriteLine( Path.GetFullPath(s) ); Console.WriteLine( Path.GetFileName(s) ); Console.WriteLine( Path.GetFileName(s) ); Console.WriteLine( Path.GetFileNameWithoutExtension(s)); Console.WriteLine( Path.GetFileNameWithoutExtension(s)); Console.WriteLine(Path.GetDirectoryName(Directory.GetCurrentDirectory())); Console.WriteLine(Path.GetPathRoot(Directory.GetCurrentDirectory())); Console.WriteLine( Path.GetTempPath() ); Console.WriteLine( Path.GetTempPath() ); Console.WriteLine( Path.GetTempFileName() );

8 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 8 IO - Tipikus jegyzőkönyv Zárjuk le a folyamot Bináris: BinaryReader, BinaryWriter osztályok valamelyike Read, Write fv. Szöveges: StreamReader, StreamWriter osztályok valamelyike ReadLine, WriteLine fv. Nyissuk meg a folyamot a FileStream osztály segítségével.

9 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 9 IO - Példa static void Main(string[] args) { StreamReader reader = null; try{ reader = new StreamReader(args[0]); for(string line = reader.ReadLine(); line != null; line = reader.ReadLine()) {Console.WriteLine(line);}} catch(IOException e){Console.WriteLine(e.Message);} finally{ if (reader != null) reader.Close(); } }

10 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 10 Sorosítás IRemotingFormatter-t implementáló osztályok (RPC): –SoapFormatter –BinaryFormatter Lementés - Serialize Feltöltés – Deserialize Attribútumok: –[Serializable()] –[NonSerialized()]

11 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 11 Példa - sorosítás using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Soap; using System.Runtime.Serialization.Formatters.Binary; public class Test { public static void Main() { public static void Main() { TestSimpleObject obj = new TestSimpleObject(); TestSimpleObject obj = new TestSimpleObject(); Console.WriteLine("Before serialization: "); obj.Print(); Console.WriteLine("Before serialization: "); obj.Print(); Stream stream = File.Open("data.xml", FileMode.Create); Stream stream = File.Open("data.xml", FileMode.Create); SoapFormatter formatter = new SoapFormatter(); SoapFormatter formatter = new SoapFormatter(); BinaryFormatter formatter = new BinaryFormatter(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, obj); stream.Close(); formatter.Serialize(stream, obj); stream.Close(); obj = null; obj = null; stream = File.Open("data.xml", FileMode.Open); stream = File.Open("data.xml", FileMode.Open); formatter = new SoapFormatter(); formatter = new BinaryFormatter(); formatter = new SoapFormatter(); formatter = new BinaryFormatter(); obj = (TestSimpleObject)formatter.Deserialize(stream); obj = (TestSimpleObject)formatter.Deserialize(stream); stream.Close(); stream.Close(); Console.WriteLine("After deserialization: "); obj.Print(); Console.WriteLine("After deserialization: "); obj.Print(); }}

12 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 12 Példa – sorosítás II [Serializable()] public class TestSimpleObject { public int member1; public string member2; public double member3; public int member1; public string member2; public double member3; [NonSerialized()] public string member4; [NonSerialized()] public string member4; public TestSimpleObject() { public TestSimpleObject() { member1 = 11; member1 = 11; member2 = "hello"; member2 = "hello"; member3 = ; member3 = ; member4 = "hello world!"; member4 = "hello world!"; } public void Print() { public void Print() { Console.WriteLine("member1 = '{0}'", member1); Console.WriteLine("member1 = '{0}'", member1); Console.WriteLine("member2 = '{0}'", member2); Console.WriteLine("member2 = '{0}'", member2); Console.WriteLine("member3 = '{0}'", member3); Console.WriteLine("member3 = '{0}'", member3); Console.WriteLine("member4 = '{0}'", member4); Console.WriteLine("member4 = '{0}'", member4); }}

13 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 13 Kategóriák 100 névtér I/O (file, stream) Collection (hash táblák, din. tömbök) Reguláris kifejezések InternetAdatbázisReflekcióDiagnosztikaSzálkezelés

14 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 14 Collection - Főbb jellemzők Bármilyen típus eltárolható benne (System.Object) Főbb osztályai: ArrayList, Hashtable, Stack, és Queue C++-ban template-ek (STL).NET 2.0-tól - Generics

15 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 15 Collection - Hash tábla Párokban tárolja az adatokat kulcs – érték Gyors keresés, egyedi kulcsok Beillesztés: Add fv., [] operátor Bejárás: foreach(DictionaryEntry entry in table) Console.WriteLine("Kulcs:{0} Érték:{1}", entry.Key, entry.Value); Console.WriteLine("Kulcs:{0} Érték:{1}", entry.Key, entry.Value); Törlés: Remove, Clear fv.-ek

16 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 16 Collection - Tömb Array osztály, statikus primitív típusokra 6 tulajdonság: IsFixedSize, IsReadOnly, IsSynchronized, Lenght, Rank, SyncRoot 22 fv. Implementál több interfészt is. Pl.:az IList-et add, clear, insert, remove,...

17 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 17 Collection - példa public class SamplesArrayList { public static void Main() { public static void Main() { ArrayList myAL = new ArrayList(); ArrayList myAL = new ArrayList(); myAL.Add("Hello"); myAL.Add("World"); myAL.Add("!"); myAL.Add("Hello"); myAL.Add("World"); myAL.Add("!"); Console.WriteLine( "myAL" ); Console.WriteLine( "myAL" ); Console.WriteLine( "\tCount: {0}", myAL.Count ); Console.WriteLine( "\tCount: {0}", myAL.Count ); Console.WriteLine( "\tCapacity: {0}", myAL.Capacity ); Console.WriteLine( "\tCapacity: {0}", myAL.Capacity ); Console.Write( "\tValues:" ); PrintValues( myAL ); Console.Write( "\tValues:" ); PrintValues( myAL ); } public static void PrintValues( IEnumerable myList ) { public static void PrintValues( IEnumerable myList ) { System.Collections.IEnumerator myEnumerator = myList.GetEnumerator(); System.Collections.IEnumerator myEnumerator = myList.GetEnumerator(); while ( myEnumerator.MoveNext() ) while ( myEnumerator.MoveNext() ) Console.WriteLine( "\t{0}", myEnumerator.Current ); } }

18 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 18 Kategóriák 100 névtér I/O (file, stream) Collection (hash táblák, din. tömbök) Reguláris kifejezések InternetAdatbázisReflekcióDiagnosztikaSzálkezelés

19 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 19 Reguláris kif. - Főbb jellemzők PERL 5.0 kompatibilis! (.NET 1.0) System.Text.RegularExpression névtér 8 osztály, 1 delegátum,1 felsorolt típus RegEx osztály Használata: –HTML elemzése –sztringeket részsztringekre bontása –egyező minták keresése –részsztring keresés/csere

20 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 20 Reguláris kif. - példa Regex r = new Regex("(-)"); string[] s = r.Split("one-two-banana"); Html elemzéshez használjuk a: RegEx regex = new RegEx(” ]*>”);

21 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 21 Reguláris kif. – példa class RegExSample{ static string CapText(Match m){ static string CapText(Match m){ string x = m.ToString(); string x = m.ToString(); if (char.IsLower(x[0])){ if (char.IsLower(x[0])){ return char.ToUpper(x[0]) + x.Substring(1, x.Length-1); } return x; } static void Main(){ static void Main(){ string text = "four score and seven years ago"; string text = "four score and seven years ago"; System.Console.WriteLine("text=[" + text + "]"); System.Console.WriteLine("text=[" + text + "]"); string result = string result = new MatchEvaluator(RegExSample.CapText)); new MatchEvaluator(RegExSample.CapText)); System.Console.WriteLine("result=[" + result + "]"); System.Console.WriteLine("result=[" + result + "]"); }}

22 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 22 Kategóriák 100 névtér I/O (file, stream) Collection (hash táblák, din. tömbök) Reguláris kifejezések InternetAdatbázisReflekcióDiagnosztikaSzálkezelés

23 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 23 Internet - Főbb jellemzők System.Net névtér 36 osztály, 5 interfész, 1 delegátum,4 felsorolt típus Fontosabb osztályok: Cookie, WebClient, WebException, WebProxy, SocketAddress, … Minden elterjedt protokollt támogat. WebRequest és WebResponse az alap.

24 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 24 Internet - példa - WebClient public class Test{ public static void Main (string[] args) { public static void Main (string[] args) { if (args == null || args.Length == 0){ if (args == null || args.Length == 0){ throw new ApplicationException ("Specify the URI of the resource to retrieve."); throw new ApplicationException ("Specify the URI of the resource to retrieve."); } WebClient client = new WebClient (); WebClient client = new WebClient (); client.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2;.NET CLR ;)"); client.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2;.NET CLR ;)"); Stream data = client.OpenRead (args[0]); Stream data = client.OpenRead (args[0]); StreamReader reader = new StreamReader (data); StreamReader reader = new StreamReader (data); string s = reader.ReadToEnd (); string s = reader.ReadToEnd (); Console.WriteLine (s); Console.WriteLine (s); data.Close (); data.Close (); reader.Close (); reader.Close (); }}

25 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 25 System.Net.Sockets.TcpClient static void Connect(String server, String message) { try { try { Int32 port = 13000; Int32 port = 13000; TcpClient client = new TcpClient(server, port); TcpClient client = new TcpClient(server, port); Byte[] data = System.Text.Encoding.ASCII.GetBytes(message); Byte[] data = System.Text.Encoding.ASCII.GetBytes(message); NetworkStream stream = client.GetStream(); NetworkStream stream = client.GetStream(); stream.Write(data, 0, data.Length); stream.Write(data, 0, data.Length); Console.WriteLine("Sent: {0}", message); Console.WriteLine("Sent: {0}", message); data = new Byte[256]; String responseData = String.Empty; data = new Byte[256]; String responseData = String.Empty; Int32 bytes = stream.Read(data, 0, data.Length); Int32 bytes = stream.Read(data, 0, data.Length); responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes); responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes); Console.WriteLine("Received: {0}", responseData); Console.WriteLine("Received: {0}", responseData); client.Close(); } client.Close(); } catch (ArgumentNullException e) {Console.WriteLine("ArgumentNullException: {0}", e);} catch (ArgumentNullException e) {Console.WriteLine("ArgumentNullException: {0}", e);} catch (SocketException e) { Console.WriteLine("SocketException: {0}", e); }} catch (SocketException e) { Console.WriteLine("SocketException: {0}", e); }}

26 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 26 WebRequest - WebResponse // Initialize the WebRequest. WebRequest myRequest = WebRequest.Create("http://www.contoso.com"); // Return the response. WebResponse myResponse = myRequest.GetResponse(); // Code to use the WebResponse goes here. // Close the response to free resources. myResponse.Close();

27 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 27 System.Web ASP.NET Web alkalmazásokhoz, XML Web szervizekhez: System.Web – osztályok, interfészek böngésző/server kommunikációhoz. HTTP kimenetet produkál (HttpResponse), olvassa HTTP kérést (HttpRequest), …. + osztályok, amelyek kezelik, használják a cookie- kat, fájl átvitelt, kivételeket,... System.Web.UI – Web Form oldalakat készíthetünk, (Page) System.Web.UI.HtmlControls – HTML specifikus kontrollok Web formokhoz. System.Web.UI.WebControls – ASP.NET Web szerver kontrollok. System.Web.Services - XML Web szervizekhez.

28 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 28 Levelezés - asp MailMessage mess = new MailMessage(); mess.From = mess.To = … mess.Subject = … mess.Body = … MailAttachment MyAttachment = new MailAttachment(sSubstr); mess.Attachments.Add(MyAttachment); SmtpMail.SmtpServer = ”localhost”; SmtpMail.Send();

29 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 29 Kategóriák 100 névtér I/O (file, stream) Collection (hash táblák, din. tömbök) Reguláris kifejezések InternetAdatbázisReflekcióDiagnosztikaSzálkezelés

30 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 30 Adatdbázis - Főbb jellemzők System.Data névtér Támogatott források: ODBC, ADO, DAO, RDO, OLEDB Főbb osztályok: Connection, DataReader, DataSet, DataAdapter, SqlException

31 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 31 Adat lekérdezés SqlDataReader System.Data.SqlClient névtér Létrehozzuk, használjuk az objektumot, majd lezárjuk a Close fv.-el. Eredmények lekérdezése: –GetBoolean, GetChar, GetDouble,... –Melyek paramétere az oszlop sorszáma (0 indexű) –InvalidCastException, ha nem konvertálható implicit. –Előtte hívjuk meg a IsDBNull fv.-t! RecordsAffected tulajdonság értéke csak a lezárás után érvényes! Lepecsételt, nem lehet származtatni!

32 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 32 Példa SqlDataReader public void ReadMyData(string myConnString) { string mySelectQuery = "SELECT OrderID, CustomerID FROM Orders"; string mySelectQuery = "SELECT OrderID, CustomerID FROM Orders"; SqlConnection myConnection = new SqlConnection(myConnString); SqlConnection myConnection = new SqlConnection(myConnString); SqlCommand myCommand = new SqlCommand(mySelectQuery,myConnection); SqlCommand myCommand = new SqlCommand(mySelectQuery,myConnection); myConnection.Open(); myConnection.Open(); SqlDataReader myReader; SqlDataReader myReader; myReader = myCommand.ExecuteReader(); myReader = myCommand.ExecuteReader(); // Always call Read before accessing data. // Always call Read before accessing data. while ( myReader.Read() ) { while ( myReader.Read() ) { Console.WriteLine( myReader.GetInt32(0) + ", " + myReader.GetString(1)); Console.WriteLine( myReader.GetInt32(0) + ", " + myReader.GetString(1)); } myReader.Close(); // always call Close when done reading. myReader.Close(); // always call Close when done reading. myConnection.Close(); // Close the connection when done with it. myConnection.Close(); // Close the connection when done with it. }

33 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 33 SqlCommand SQL utasítás, vagy tárolt elj. futtathatunk. Lepecsételt, nem lehet származtatni! Parancs futtatása: –ExecuteReader – több soros lekérdezés –ExecuteNonQuery – INSERT, DELETE, UPDATE, SET DataSet nélküli –ExecuteScalar – egyszerű típusra Lefuttatja az utasítást, és visszatér az első sor első oszlopával. –ExecuteXmlReader– CommandText -> XmlReader Az eredmény XML-ben jön vissza.

34 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 34 Példa SqlCommand public void CreateMySqlCommand(string myExecuteQuery, SqlConnection myConnection) { SqlCommand myCommand = new SqlCommand(myExecuteQuery, myConnection); SqlCommand myCommand = new SqlCommand(myExecuteQuery, myConnection); myCommand.Connection.Open(); myCommand.Connection.Open(); int AffectedRows = myCommand.ExecuteNonQuery(); int AffectedRows = myCommand.ExecuteNonQuery(); myConnection.Close(); myConnection.Close(); }

35 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 35 Példa ExecuteXmlReader public void CreateMyXmlReader(string myXmlQuery, SqlConnection myConnection){ SqlCommand myCommand = new SqlCommand(myXmlQuery, myConnection); SqlCommand myCommand = new SqlCommand(myXmlQuery, myConnection); try{ try{ myConnection.Open(); myConnection.Open(); System.Xml.XmlReader myXmlReader = myCommand.ExecuteXmlReader(); System.Xml.XmlReader myXmlReader = myCommand.ExecuteXmlReader(); myXmlReader.Close(); // Always close the XmlReader when finished. } catch(Exception e){ catch(Exception e){ System.Diagnostics.EventLog log = new System.Diagnostics.EventLog(); System.Diagnostics.EventLog log = new System.Diagnostics.EventLog(); log.Source = "My Application"; log.Source = "My Application"; log.WriteEntry(e.ToString()); log.WriteEntry(e.ToString()); Console.WriteLine("Exception of type {0} occurred.", e.GetType()); Console.WriteLine("Exception of type {0} occurred.", e.GetType()); } finally{ myConnection.Close(); } } finally{ myConnection.Close(); } }

36 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 36 Példa kivételkezelés - tranzakciók SqlTransaction myTrans; myCommand.Transaction = myTrans; try{ myCommand.ExecuteNonQuery(); myTrans.Commit(); } catch(Exception e){ try{ myTrans.Rollback(); } try{ myTrans.Rollback(); } catch (SqlException ex){ catch (SqlException ex){ if (myTrans.Connection != null){ if (myTrans.Connection != null){ Console.WriteLine("An exception of type " + ex.GetType() + Console.WriteLine("An exception of type " + ex.GetType() + " was encountered while attempting to roll back the transaction."); " was encountered while attempting to roll back the transaction."); } } Console.WriteLine("An exception of type " + e.GetType() + Console.WriteLine("An exception of type " + e.GetType() + " was encountered while inserting the data."); " was encountered while inserting the data."); Console.WriteLine("Neither record was written to database."); Console.WriteLine("Neither record was written to database."); } finally{ myConnection.Close(); } finally{ myConnection.Close(); }

37 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 37 Változó paraméterek használata Prepare fv. hívása, utána execute. Előtte be kell állítani a paramétereket –Értékét –Szerver oldali nevét

38 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 38 Példa Prepare int id = 20; int id = 20; string desc = "myFirstRegion" ; string desc = "myFirstRegion" ; SqlConnection rConn = new SqlConnection("Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer"); SqlConnection rConn = new SqlConnection("Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer"); rConn.Open(); rConn.Open(); SqlCommand command = new SqlCommand(null, rConn); SqlCommand command = new SqlCommand(null, rConn); command.CommandText = "insert into Region (RegionID, RegionDescription) ; command.CommandText = "insert into Region (RegionID, RegionDescription) ; command.Parameters.Add ( id) ; command.Parameters.Add ( id) ; command.Parameters.Add ( desc) ; command.Parameters.Add ( desc) ; command.Prepare(); // Calling Prepare after having set the Commandtext and parameters. command.Prepare(); // Calling Prepare after having set the Commandtext and parameters. command.ExecuteNonQuery(); command.ExecuteNonQuery(); command.Parameters[0].Value = 21; command.Parameters[0].Value = 21; command.Parameters[1].Value = "mySecondRegion"; command.Parameters[1].Value = "mySecondRegion"; command.ExecuteNonQuery(); command.ExecuteNonQuery();

39 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 39 DataSet ADO.NET fő komponense Az adatbázis pufferelt mása a memóriában DataTable objektumok gyűjteménye, lehet közöttük kapcsolat. Írható, olvasható XML sémájú HTTP-n keresztül valósul meg a kapcsolat A séma betölthető XML-ből, lementhető XML-be

40 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 40 DataAdapter Híd a DataSet és az adatforrás között. Fill feltölti a DataSet-et az adatforrás alapján Update frissíti az adatforrást a DataSet alapján Microsoft SQL esetén használjuk az SqlDataAdapter

41 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 41 Példa DataAdapter public DataSet CreateCmdsAndUpdate(DataSet myDataSet,string myConnection,string mySelectQuery,string myTableName) { OleDbConnection myConn = new OleDbConnection(myConnection); OleDbConnection myConn = new OleDbConnection(myConnection); OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(); OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(); myDataAdapter.SelectCommand = new OleDbCommand(mySelectQuery, myConn); myDataAdapter.SelectCommand = new OleDbCommand(mySelectQuery, myConn); OleDbCommandBuilder custCB = new OleDbCommandBuilder(myDataAdapter); OleDbCommandBuilder custCB = new OleDbCommandBuilder(myDataAdapter);myConn.Open(); DataSet custDS = new DataSet(); myDataAdapter.Fill(custDS); myDataAdapter.Fill(custDS); //code to modify data in dataset here myDataAdapter.Update(custDS);myConn.Close(); return custDS; }

42 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 42 Példa - DataSet SqlConnection myConn = new SqlConnection(cString); SqlDataAdapter myAdapter = new SqlDataAdapter(); myAdapter.TableMappings.Add("Table", "Suppliers"); myConn.Open(); SqlCommand myCmd = new SqlCommand("SELECT * FROM Suppliers", myConn); myAdapter.SelectCommand = myCmd; ds = new DataSet("Customers"); myAdapter.Fill(ds); SqlDataAdapter adpProducts = new SqlDataAdapter(); adpProducts.TableMappings.Add("Table", "Products"); SqlCommand cmdProd = new SqlCommand("SELECT * FROM Products", myConn); adpProducts.SelectCommand = cmdProd; adpProducts.Fill(ds); myConn.Close(); System.Data.DataRelation dr; System.Data.DataColumn dc1, dc2; dc1 = ds.Tables["Suppliers"].Columns["SupplierID"]; dc2 = ds.Tables["Products"].Columns["SupplierID"]; dr = new System.Data.DataRelation("suppliers2products", dc1, dc2); ds.Relations.Add(dr);

43 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 43 Kategóriák 100 névtér I/O (file, stream) Collection (hash táblák, din. tömbök) Reguláris kifejezések InternetAdatbázisReflekcióDiagnosztikaSzálkezelés

44 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 44 Reflekció – főbb jellemzők System.Reflection névtér Információ osztályok MethodInfo, ConstructorInfo, MemberInfo, …

45 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 45 Példa – assembly fv.-ei using System; using System.Reflection; public class LoadInvoke{ public static void Main(string[] args){ public static void Main(string[] args){ Assembly a = Assembly.LoadFrom(args[0]); Assembly a = Assembly.LoadFrom(args[0]); Type[] mytypes = a.GetTypes(); Type[] mytypes = a.GetTypes(); BindingFlags flags = (BindingFlags.NonPublic | BindingFlags.Public | BindingFlags flags = (BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly); BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly); foreach(Type t in mytypes) { foreach(Type t in mytypes) { MethodInfo[] mi = t.GetMethods(flags); MethodInfo[] mi = t.GetMethods(flags); Object obj = Activator.CreateInstance(t); Object obj = Activator.CreateInstance(t); foreach( MethodInfo m in mi){ m.Invoke(obj, null); } foreach( MethodInfo m in mi){ m.Invoke(obj, null); } } }}

46 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 46 Példa - assembly Assembly SampleAssembly; SampleAssembly = Assembly.LoadFrom("c:\\Sample.Assembly.dll"); MethodInfo Method = SampleAssembly.GetTypes()[0].GetMethod("Method1"); ParameterInfo[] Params = Method.GetParameters(); // Display information about method parameters. // Param = sParam1 // Type = System.String // Position = 0 // Optional=False foreach (ParameterInfo Param in Params) { Console.WriteLine("Param=" + Param.Name.ToString()); Console.WriteLine("Param=" + Param.Name.ToString()); Console.WriteLine(" Type=" + Param.ParameterType.ToString()); Console.WriteLine(" Type=" + Param.ParameterType.ToString()); Console.WriteLine(" Position=" + Param.Position.ToString()); Console.WriteLine(" Position=" + Param.Position.ToString()); Console.WriteLine(" Optional=" + Param.IsOptional.ToString()); Console.WriteLine(" Optional=" + Param.IsOptional.ToString());}

47 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 47 Kategóriák 100 névtér I/O (file, stream) Collection (hash táblák, din. tömbök) Reguláris kifejezések InternetAdatbázisReflekcióDiagnosztikaSzálkezelés

48 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 48 Diagnosztika – főbb tulajdonságok System.Diagnostic névtér EventLog Olvashatunk – írhatunk a redszer eseményeket. Process Futó processzeket monitorozhatjuk. PerformanceCounter A helyi vagy távoli rendszert monitorozhatjuk. Debug, Trace Hibakeresés, nyomkövetés

49 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 49 Példa EventLog using System; using System.Diagnostics; using System.Threading; class MySample{ public static void Main(){ public static void Main(){ // Create the source, if it does not already exist. // Create the source, if it does not already exist. if(!EventLog.SourceExists("MySource")){ if(!EventLog.SourceExists("MySource")){ EventLog.CreateEventSource("MySource", "MyNewLog"); EventLog.CreateEventSource("MySource", "MyNewLog"); Console.WriteLine("CreatingEventSource"); Console.WriteLine("CreatingEventSource"); } // Create an EventLog instance and assign its source. // Create an EventLog instance and assign its source. EventLog myLog = new EventLog(); EventLog myLog = new EventLog(); myLog.Source = "MySource"; myLog.Source = "MySource"; myLog.WriteEntry("Writing to event log."); myLog.WriteEntry("Writing to event log."); }}

50 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 50 Példa - diagnosztika using System;using System.Diagnostics; using System.ComponentModel; const int ERROR_FILE_NOT_FOUND =2; const int ERROR_ACCESS_DENIED = 5; public void PrintDoc() { public void PrintDoc() { Process myProcess = new Process(); Process myProcess = new Process(); try { try { string myDocumentsPath = string myDocumentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal); Environment.GetFolderPath(Environment.SpecialFolder.Personal); myProcess.StartInfo.FileName = myDocumentsPath + "\\MyFile.doc"; myProcess.StartInfo.FileName = myDocumentsPath + "\\MyFile.doc"; myProcess.StartInfo.Verb = "Print"; myProcess.StartInfo.Verb = "Print"; myProcess.StartInfo.CreateNoWindow = true; myProcess.StartInfo.CreateNoWindow = true; myProcess.Start(); myProcess.Start(); } catch (Win32Exception e) { catch (Win32Exception e) { if(e.NativeErrorCode == ERROR_FILE_NOT_FOUND) { Console.WriteLine(e.Message + ". Check the path."); } if(e.NativeErrorCode == ERROR_FILE_NOT_FOUND) { Console.WriteLine(e.Message + ". Check the path."); } else if (e.NativeErrorCode == ERROR_ACCESS_DENIED) { Console.WriteLine(e.Message + ". Nincs jog"); else if (e.NativeErrorCode == ERROR_ACCESS_DENIED) { Console.WriteLine(e.Message + ". Nincs jog"); } }

51 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 51 Példa – diagnosztika II try{ try{ Process myProcess; Process myProcess; myProcess = Process.Start("Notepad.exe"); myProcess = Process.Start("Notepad.exe"); // Display physical memory usage 5 times at intervals of 2 seconds. // Display physical memory usage 5 times at intervals of 2 seconds. for (int i = 0;i < 5; i++) { for (int i = 0;i < 5; i++) { if (!myProcess.HasExited){ if (!myProcess.HasExited){myProcess.Refresh(); // Print working set to console. // Print working set to console. Console.WriteLine("Physical Memory Usage: " Console.WriteLine("Physical Memory Usage: " + myProcess.WorkingSet.ToString()); + myProcess.WorkingSet.ToString());Thread.Sleep(2000); } else { break; } } else { break; } } myProcess.CloseMainWindow(); myProcess.CloseMainWindow(); myProcess.Close(); myProcess.Close(); } catch(Exception e) { Console.WriteLine(e.Message); } } catch(Exception e) { Console.WriteLine(e.Message); }

52 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 52 Példa - debug public static int Main(string[] args){ Debug.Listeners.Add(new TextWriterTraceListener(Console.Out)); Debug.Listeners.Add(new TextWriterTraceListener(Console.Out)); Debug.AutoFlush = true; Debug.AutoFlush = true; Debug.Indent(); Debug.Indent(); Debug.WriteLine("Entering Main"); Debug.WriteLine("Entering Main"); Console.WriteLine("Hello World."); Console.WriteLine("Hello World."); Debug.WriteLine("Exiting Main"); Debug.WriteLine("Exiting Main"); Debug.Unindent(); Debug.Unindent(); return 0; return 0;} public static void MyMethod(Type type, Type baseType) { Debug.Assert(type != null, "Type parameter is null", Debug.Assert(type != null, "Type parameter is null", "Can't get object for null type"); "Can't get object for null type");}

53 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 53 Példa - trace static TraceSwitch mySwitch = new TraceSwitch("General", "Entire Application"); static public void MyMethod() { static public void MyMethod() { // Write the message if the TraceSwitch level is set to Error or higher. // Write the message if the TraceSwitch level is set to Error or higher. if(mySwitch.TraceError) if(mySwitch.TraceError) Console.WriteLine("My error message."); Console.WriteLine("My error message."); // Write the message if the TraceSwitch level is set to Verbose. // Write the message if the TraceSwitch level is set to Verbose. if(mySwitch.TraceVerbose) if(mySwitch.TraceVerbose) Console.WriteLine("My second error message."); Console.WriteLine("My second error message."); } public static void Main(string[] args) { public static void Main(string[] args) { // Run the method that prints error messages based on the switch level. // Run the method that prints error messages based on the switch level. MyMethod(); MyMethod(); }

54 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 54 Kategóriák 100 névtér I/O (file, stream) Collection (hash táblák, din. tömbök) Reguláris kifejezések InternetAdatbázisReflekcióDiagnosztikaSzálkezelés

55 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 55 Szálak – főbb tulajdonságok System.Threading névtér Szálkezelő fv.-ek: –Start –Abort (AbortException) –Interrupt –Suspend –Join –Sleep (statikus)

56 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 56 Példa - szálkezelés using System; using System.Threading; public static void ThreadProc() { public static void ThreadProc() { for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) { Console.WriteLine("Thread: {0}", i);Thread.Sleep(100); } } public static void Main() { public static void Main() { Console.WriteLine("Main thread: Start a second thread."); Console.WriteLine("Main thread: Start a second thread."); Thread t = new Thread( new ThreadStart (ThreadProc)); Thread t = new Thread( new ThreadStart (ThreadProc)); t.Start(); t.Start(); for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) { Console.WriteLine("Main thread: Do some work."); Thread.Sleep(200); Console.WriteLine("Main thread: Do some work."); Thread.Sleep(200); } Console.WriteLine("Main thread: Call Join(), ThreadProc ends."); Console.WriteLine("Main thread: Call Join(), ThreadProc ends."); t.Join(); t.Join(); Console.WriteLine("Main thread: Press Enter to end program."); Console.WriteLine("Main thread: Press Enter to end program."); Console.ReadLine(); Console.ReadLine(); }

57 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 57 Példa – Get/SetData class Test { static void Main() static void Main(){ Thread[] newThreads = new Thread[4]; Thread[] newThreads = new Thread[4]; for(int i = 0; i < newThreads.Length; i++){ for(int i = 0; i < newThreads.Length; i++){ newThreads[i] = new Thread( newThreads[i] = new Thread( new ThreadStart(Slot.SlotTest)); new ThreadStart(Slot.SlotTest)); newThreads[i].Start(); newThreads[i].Start(); } }}

58 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 58 Példa – Get/SetData II class Slot{ static Random randomGenerator; static LocalDataStoreSlot localSlot; static Random randomGenerator; static LocalDataStoreSlot localSlot; static Slot() { static Slot() { randomGenerator = new Random(); randomGenerator = new Random(); localSlot = Thread.AllocateDataSlot(); localSlot = Thread.AllocateDataSlot(); } public static void SlotTest() { public static void SlotTest() { Thread.SetData(localSlot, randomGenerator.Next(1, 200)); Thread.SetData(localSlot, randomGenerator.Next(1, 200)); Console.WriteLine("Data in thread_{0}'s data slot: {1,3}", Console.WriteLine("Data in thread_{0}'s data slot: {1,3}", AppDomain.GetCurrentThreadId().ToString(), AppDomain.GetCurrentThreadId().ToString(), Thread.GetData(localSlot).ToString()); Thread.GetData(localSlot).ToString()); Thread.Sleep(1000); // legyen ideje a szálaknak beírni Thread.Sleep(1000); // legyen ideje a szálaknak beírni Console.WriteLine("Data in thread_{0}'s data slot: {1,3}", Console.WriteLine("Data in thread_{0}'s data slot: {1,3}", AppDomain.GetCurrentThreadId().ToString(), AppDomain.GetCurrentThreadId().ToString(), Thread.GetData(localSlot).ToString()); Thread.GetData(localSlot).ToString()); }}

59 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 59 Példa – mutex class Test{ private static Mutex mut = new Mutex(); private const int numIterations = 1; private const int numThreads = 3; static void Main(){ // szálak létrehozása for(int i = 0; i < numThreads; i++) { Thread myThread = new Thread(new ThreadStart(MyThreadProc)); Thread myThread = new Thread(new ThreadStart(MyThreadProc)); myThread.Name = String.Format("Thread{0}", i + 1); myThread.Name = String.Format("Thread{0}", i + 1); myThread.Start(); myThread.Start(); } // fő szál kilép, csak a fonalak futnak }

60 Krizsán Zoltán, iit.NET Framework Class Library (FCL) 60 Példa – mutex II private static void MyThreadProc(){ for(int i = 0; i < numIterations; i++){ UseResource(); } } // A szinkronizált erőforrást szimulálja private static void UseResource() { mut.WaitOne(); // VÁRAKOZUNK ABELÉPÉSRE Console.WriteLine("{0} has entered the protected area", Thread.CurrentThread.Name); Thread.Sleep(500); // SZIMULÁLJUK AMELÓT Console.WriteLine("{0} is leaving the protected area\r\n", Thread.CurrentThread.Name); mut.ReleaseMutex(); // ELENGEDJÜK A MUTEX-ET }


Letölteni ppt ".NET Framework Class Library (FCL).NET 1.0 Krizsán Zoltán 1.0."

Hasonló előadás


Google Hirdetések