الاثنين، 29 يوليو 2013

دورة السي شارب الدرس 20- دوال sql server (الى هنا نكون انهينا دورتنا اتمنى اكون وفقت في الطرح )

دورة السي شارب
الدرس 20- دوال sql server (الى هنا نكون انهينا دورتنا اتمنى اكون وفقت في الطرح )
السلام عليكم ورحمة الله وبركاته...

 دوال ال sql server ...


 أولا قم بتجهيز ال database التي نستخدمها في الدورة دائما وهي إمسها mydatabase تحوي عامودان FirstName,Age وضع بها بعض البيانات...

 

 1- AVG :

 

 وتستخدم هذه الدالة لإيجاد المتوسط الحسابي لعمود ما ( رقم طبعا )...

 يمكن إستخدامها كالتالي:

System.Data.SqlClient.SqlConnection c = new System.Data.SqlClient.SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\TD\Documents\mydatabase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

string s = "select AVG(Age) From mytable";

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(s, c);

c.Open();

MessageBox.Show(cmd.ExecuteScalar().ToString());

c.Close(); 

أو مثلا حساب المتوسط العمري لكل شخص يفوق عمره ال 15:

System.Data.SqlClient.SqlConnection c = new System.Data.SqlClient.SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\TD\Documents\mydatabase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

string s = "select AVG(Age) From mytable where Age > 15";

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(s, c);

c.Open();

MessageBox.Show(cmd.ExecuteScalar().ToString());

c.Close(); 

2- الدالة Count ...

 

 تعود هذه الدالة بكم عدد الأعمار الموجودة داخل الجدول بشرط أو بدون شرط...

 

 يتم إستخدامها كالتالي...

System.Data.SqlClient.SqlConnection c = new System.Data.SqlClient.SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\TD\Documents\mydatabase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

string s = "Select Count(Age) From mytable";

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(s, c);

c.Open();

MessageBox.Show(cmd.ExecuteScalar().ToString());

c.Close(); 

3- الدالة sum ...

 

تعيد هذه الدالة مجموع العمود المسندة إليه مثلا مجموع الAge ( أيضا يمكن إستخدامها بشرط مثل where Age > 15 ) ...

System.Data.SqlClient.SqlConnection c = new System.Data.SqlClient.SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\TD\Documents\mydatabase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

string s = "Select sum(Age) From mytable";

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(s, c);

c.Open();

MessageBox.Show(cmd.ExecuteScalar().ToString());

c.Close(); 

4- الدالة Max ...

تعود هذه الدالة بأكبر قيمة موجودة بالعامود المسندة له ...

مثلا هنا سوف تعود بعمر اكبر شخص موجود...

System.Data.SqlClient.SqlConnection c = new System.Data.SqlClient.SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\TD\Documents\mydatabase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

string s = "Select max(Age) From mytable";

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(s, c);

c.Open();

MessageBox.Show(cmd.ExecuteScalar().ToString());

c.Close(); 

5- الدالة Min ...

 

 وهي عكس الدالة Max حيث تعيد أصغر قيمة في العامود المسندة له ...

 هنا سوف تعيد أصغر عمر في العامود Age...

System.Data.SqlClient.SqlConnection c = new System.Data.SqlClient.SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\TD\Documents\mydatabase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

string s = "Select min(Age) From mytable";

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(s, c);

c.Open();

MessageBox.Show(cmd.ExecuteScalar().ToString());

c.Close(); 

هكذا نكون قد تعرفنا على بعض دوال ال sql server وكيفية التعامل معهم...

الي هناء نكون اكملنا دورسنا اتمنى اكون وفقت في الشرح.

مع تحياتي /عبدالقادر البعداني

الأحد، 28 يوليو 2013

الدرس 19- Stored Procedures

دورة السي شارب

الدرس 19- Stored Procedures

 السلام عليكم ورحمة الله وبركاته...

 مفهوم ال Stored Procedures :

 إن ال Stored Procedures هي عبارة عن جملة إستعلام مخزنة في قاعدة البيانات وإستدعائها يشبه إستدعاء أي Method كما سوف ترى...

 

 لنرى مثال لضرورة إستخدام ال Stored Procedures ...

 

 أولا إنشئ مشروع جديد وقاعدة بيانات وسمها كما سميناها سابقا mydatabase

 والان لو كنا مثلا نريد المستخدم أن يضع إسم الموظف المراد جلب بياناته في textBox فقرر في نفس اللحظة أن يصبح مبرمج فكتب مثلا ...

 سوف يكون الكود لتنفيذ ذلك:

 

كود:

 

"Select FirstName,Age From mytable Where FirstName = '{0},textBox1.Text" 

الان ليس المهم الكود وإنما المستخدم فتصور لو الأخ كتب مثلا...

 

 Drop mytable !!!

 أو أي جملة إستعلام أخرى !!!

 

 ما السبيل لتفادي ذلك ؟

 

 هنا جاء دور ال Stored Procedures لكي لا يتمكن المستخدم من تنفيذ جمل إستعلام من خلال كتاباته...

 

 الان أضف لقاعدة البيانات Stored Procedures كالتالي:

 ( لقد قمت بإنشاء قاعدة بيانات بإسم TD_Data و جدول بها بإسم tb1 يحوي على ثلاث أعمدة هي:

 

كود:

FName (nchar(10))

LName(nchar(10()

Age(bigint) 

 

 من مجلد ال Stored Procedures إختر Add New Stored Procedures

 

 والان أكتب بها...

 

 

 

كود:

 

Create PROCEDURE dbo.GetAgesAvg

@agesavg int = 0 output

AS

select @agesavg = avg(Age) From tb1

RETURN @agesavg 

 

 ثم ضع Button و textBox وفي الحدث click لل button أكتب...

 

SqlConnection sqlcn = new SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\TD\Documents\TD_Data.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

string sqlcmdstr = "GetAgesAvg";

SqlCommand sqlcmd = new SqlCommand(sqlcmdstr, sqlcn);

SqlParameter par = new SqlParameter();

sqlcmd.CommandType = CommandType.StoredProcedure;

par.ParameterName = "@agesavg";

par.Direction = ParameterDirection.Output;

par.SqlDbType = SqlDbType.Int;

sqlcmd.Parameters.Add(par);

try

{

sqlcn.Open();

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

sqlcmd.ExecuteNonQuery();

textBox1.Text = sqlcmd.Parameters("@agesavg").Value.ToString();

sqlcn.Close(); 

هكذا في جمل الإستعلام هذه سوف يعود ال parameter بمعدل الأعمار التي في الجدول

 ( مجموع الأعمار تقسيم عددها )

 

 

 وعلى هذا النحو تستخدم ال Stored Procedures ....

مع تحياتي/ عبدالقادر البعداني

 إلى اللقاء في الدرس القادم إن شاء الله...

 

 

الدرس 19- ربط قاعدة بيانات accessمع vb.net وتنفيذ جمل إستعلام - الوضع المتصل دورة الدوت نت


دورة الدوت نت
الدرس 19- ربط قاعدة بيانات accessمع vb.net وتنفيذ جمل إستعلام - الوضع المتصل

السلام عليكم ورحمة الله وبركاته...

*** ملاحظة : الفرق بين هذا الدرس والدرس 18 هو قاعدة البيانات المستخدمة فقط ***


أولا :

 

قم بإنشاء قاعدة بيانات وسمها mydatabase
 ثم قم بإنشاء جدول بها وسمه mytable وضع فيه عواميد كالتالي...

 

العمود - الإسم - نوع البيانات

 1 - FirstName - نصية nchar(10)

 2 - Age - رقم bigint

 

الان قم بعرض بيانات الجدول عن طريق RightClick من ال Mouse على الجدول ثم إختر Show Table Data ثم إبدأ بوضع البيانات كالتالي...

 

طارق - 15

 إسمك - عمرك وهكذا ....

 

 

 

 

ثانيا... ربط قاعدة البيانات مع ال vb.net

 

أولا قم بإستيراد المجال:

كود:

System.Data.OleDb

 

الان ضع Button على الفورم وضع أيضا listbox ...

 

ثم إكتب في الكود الخاص بالحدث Click لل button1 ...

Dim cn As New OleDbConnection

cn.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\TD\Documents\mydatabase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

Dim mycmd As String = "select FirstName,Age from mytable"

Dim cmd As OleDbCommand = New OleDbCommand(mycmd, cn)

cn.Open()

Dim myreader As OleDbDataReader = cmd.ExecuteReader

While myreader.Read()

ListBox1.Items.Add("firstname: " + myreader("FirstName") + " Age: " + myreader("Age").ToString)

End While

cn.Close()

myreader.Close()

شرح الكود السابق...

 

 

كود:

Dim cn As New OleDbConnection

cn.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\TD\Documents\mydatabase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

 

هنا قمنا بتعريف الإتصال الخاص بقاعدة البيانات mydatabase ...

 

Dim mycmd As String = "select FirstName,Age from mytable"

هنا قمنا بتعريف متغير من نوع String يحوي على نص جملة الإستعلام...

Dim cmd As OleDbCommand = New OleDbCommand(mycmd, cn)

cn.Open()

هنا قمنا بتعريف ال Command الذي سوف نرسله لقاعدة البيانات وفتح الإتصال...

Dim myreader As OleDbDataReader = cmd.ExecuteReader

لان قمنا بتعريف قارئ للبيانات علما أن أنواع القوارئ هي...

 

 

 

ExecuteReader: في حال كان الناتج عدد كبير من البيانات...

 

ExecuteNonQuery: في حال لا يوجد أي قيمة مرجعة مثل عمل update أو delete ...

 

ExecuteScalar : في حال كان لا يوجد إلا قيمة مرجعة واحدة مثل الإسم الأول مثلا...

 

ExecuteXmlReader : لأخذ الناتج على شكل XML ...

 

 

الكود التالي...

While myreader.Read()

ListBox1.Items.Add("firstname: " + myreader("FirstName") + " Age: " + myreader("Age").ToString)

End While

قراءة البيانات الناتجة كما في الشكل السابق...

myreader.Close()

cn.Close()

إغلاق كل شيئ تم إستخدامه وهو الإتصال والقارئ...

 

 

الان نكون قد بدأنا بأساسيات ربط قواعد البيانات...

 

بإذن الله في الدرس القادم سوف نطبق جمل إستعلام متقدمة والتعلم كيف عمل insert,update,delete إلى ما هنالك...

مع تحياتي :عبدالقادر البعداني

 

إلى اللقاء في الدرس القادم إن شاء الله...