الأربعاء، 31 يوليو 2013

دورة الدوت نت الدرس 22- دوال sql server


دورة الدوت نت (الدرس الاخير في الدورة اتمنى اكون وفقت في الطرح)
الدرس 22- دوال sql server
دوال ال sql server ...

 

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

 

 1- AVG :

 

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

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

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

Dim s As String = "Select AVG(Age) From mytable"

Dim cmd As New SqlClient.SqlCommand(s, c)

c.Open()

MsgBox(cmd.ExecuteScalar().ToString)

c.Close() 

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

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

Dim s As String = "Select AVG(Age) From mytable where Age > 15"

Dim cmd As New SqlClient.SqlCommand(s, c)

c.Open()

MsgBox(cmd.ExecuteScalar().ToString)

c.Close() 

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

 

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

 

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

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

Dim s As String = "Select Count(Age) From mytable"

Dim cmd As New SqlClient.SqlCommand(s, c)

c.Open()

MsgBox(cmd.ExecuteScalar().ToString)

c.Close() 

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

 

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

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

Dim s As String = "Select sum(Age) From mytable"

Dim cmd As New SqlClient.SqlCommand(s, c)

c.Open()

MsgBox(cmd.ExecuteScalar().ToString)

c.Close() 

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

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

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

 

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

Dim s As String = "Select max(Age) From mytable"

Dim cmd As New SqlClient.SqlCommand(s, c)

c.Open()

MsgBox(cmd.ExecuteScalar().ToString)

c.Close() 

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

 

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

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

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

Dim s As String = "Select min(Age) From mytable"

Dim cmd As New SqlClient.SqlCommand(s, c)

c.Open()

MsgBox(cmd.ExecuteScalar().ToString)

c.Close() 

 

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

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

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

الثلاثاء، 30 يوليو 2013

دورة الدوت نت الدرس 21- Stored Procedures


دورة الدوت نت
الدرس 21- Stored Procedures
 السلام عليكم ورحمة الله وبركاته...

 مفهوم ال Stored Procedures :

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

 

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

 

 أولا إنشئ مشروع جديد وقاعدة بيانات وسمها كما سميناها سابقا mydatabase (تجد هذه التفاصيل في أول الدرس 18)

 

 

 والان لو كنا مثلا نريد المستخدم أن يضع إسم الموظف المراد جلب بياناته في 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 أكتب...

 

 

 

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

Dim sqlcmdstr As String = "GetAgesAvg"

Dim sqlcmd As New SqlCommand(sqlcmdstr, sqlcn)

Dim par As 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 ex As Exception

MsgBox(ex.Message)

End

End Try

sqlcmd.ExecuteNonQuery()

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

sqlcn.Close() 

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

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

 

 

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

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

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

 

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

دورة الدوت نت الدرس 20- تنفيذ جمل الإستعلام insert-update-delete

دورة الدوت نت
الدرس 20- تنفيذ جمل الإستعلام insert-update-delete

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

اليوم سوف يكون الدرس متخصص بجمل sql من أنواعها...

 

أولا : تجهيز المشروع...

 

أولا قم بإنشاء قاعدة بيانات سمها mydatabase ثم قم بعمل جدول سمه mytable وضعه به عمود إسمه FirstName نوع بياناته nchar وعمود إسمه Age نوع بياناته bigint ...

 

الان قم بإنشاء الإتصال كما ذكرنا سابقا حيث يكون كود الإتصال كاملا...

 

قم باستيراد المجال : System.Data.SqlClient

 

أولا كود الإضافة insert ...

 

لنفترض الان أننا نريد أن نضيف للجدول mytable موظف إسمه ( tarek) عمره ( 15 ) ...

 

Dim cn As New SqlConnection

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 = "insert into mytable values ('tarek','15')"

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

cn.Open()

cmd.ExecuteNonQuery()

cn.Close()

 

2- update ... لنفترض أننا نود تعديل عمر الموظف الذي يدعى tarek إلى 100 سنة  يكون الكود:

Dim cn As New SqlConnection

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 = "update mytable set Age = 100 where FirstName = 'tarek'"

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

cn.Open()

cmd.ExecuteNonQuery()

cn.Close()

3- delete والان لنفترض أنك تود حذفي ( tarek )  يكون الكود:

Dim cn As New SqlConnection

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 = "delete from mytable where FirstName = 'tarek'"

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

cn.Open()

cmd.ExecuteNonQuery()

cn.Close()

ملاحظة : يمكنك وضع شروط الحذف أو التعديل كيف ما تشاء ...مثلا...

 

 

كود:

delete from mytable where Age > 15 

حيث في هذه الحالة سوف يتم حذف كل شخص عمره فوق ال 15 ...

 

 - إنشاء جدول...

 

 جدول إسمه tb1 يحول على name من نوع nchar(10) و age من نوع bigint الكود:

Dim cn As New SqlConnection

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 = "create table tb1 (name nchar(10),age bigint);"

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

cn.Open()

cmd.ExecuteNonQuery()

cn.Close() 

لحذف الجدول الذي قمنا به ...

Dim cn As New SqlConnection

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 = "drop table tb1 cascade"

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

cn.Open()

cmd.ExecuteNonQuery()

cn.Close() 

إضافة حقول إلى جدول ما ...

 

بفرض أننا نريد أن نضيف عامود brithday إلى mytable يحوي على يوم الميلاد ..

Dim cn As New SqlConnection

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 = "alter table mytable add brithday datetime"

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

cn.Open()

cmd.ExecuteNonQuery()

cn.Close() 

إلى اللقاء في الدرس القادم إن شاء الله .
مع تحياتي / عبدالقادر البعداني