فهرست
SQL Server
1- پایگاه داده SQL SERVER
2- دیتابیس database
3- نوع نصب و سایت مایکروسافت
4- راهنمای نصب
5- برنامه Management Studio
6- ویژوال استادیو (Visual Studio) و SQL Server
7- در SQL Server نحوه login کردن
8- رمزنگاری Encryption
9- اصطلاحات optional، mandatory و strict
10- توضیح مختصری از هر پوشه در Object Explorer
11- ویژگی XEvent Profiler
12- سیستم ادمین
13- ایجاد لاگین جدید
14- جدولهای دیتابیس
15- ایجاد دیتابیس به دو روش
16- انوع دادهها (Data Types) در دیتابیس
17- گزینه SET PRIMARY KEY
18- نوع داده NVARCHAR
19- خطا یابی ویرایش دیتابیس
20- ایجاد جدول
21- ویژگی Identity
22- مثال ساده از نحوه ایجاد یک جدول
23- کلمات کلیدی رزرو شده (Reserved Keywords)
24- اضافه کردن یک ستون جدید به جدول
25- اضافه کردن یک ستون از نوع int و ویرایش کردن
26- اضافه کردن و ویرایش ویژگی IDENTITY به یک ستون
27- انتخاب کردن سطرهای یک جدول
28- اضافه کردن یک سطر جدید به جدول
29- یک مثال اضافه کردن یک سطر جدید به جدول و ویژگی Identity
30- مثال دوم ویژگی IDENTITY و ایجاد چند سطر به جدول
31- بهروزرسانی یک سطر
32- یک مثال دیگر برای بهروزرسانی یک سطر
33- حذف یک سطر
34- جزئیات بیشتر ایجاد دیتابیس
35- Auto GrowthAuto Growth چیست
36- گزینه unlimited
37- اضافه کردن فایل های دیتابیس
برای ذخیره نام و فامیل در دیتابیس SQL Server با استفاده از سیشارپ و کنسول، میتوانید مراحل زیر را دنبال کنید:
1. ایجاد دیتابیس و جدول در SQL Serverابتدا باید یک دیتابیس و جدول در SQL Server ایجاد کنید. برای این کار میتوانید از SQL Server Management Studio (SSMS) استفاده کنید.
CREATE DATABASE MyDatabase;
GO
USE MyDatabase;
GO
CREATE TABLE Persons (
PersonID int IDENTITY(1,1) PRIMARY KEY,
FirstName nvarchar(50),
LastName nvarchar(50)
);
GO
2. ایجاد پروژه کنسول در سیشارپدر Visual Studio، یک پروژه کنسول جدید ایجاد کنید.
3. اضافه کردن کتابخانههای مورد نیازباید کتابخانههای System.Data.SqlClient را به پروژه اضافه کنید. این کار را میتوانید از طریق NuGet Package Manager انجام دهید.
4. نوشتن کد برای اتصال به دیتابیس و ذخیره اطلاعاتدر فایل Program.cs، کد زیر را اضافه کنید:
using System;
using System.Data.SqlClient;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
string connectionString = "Server=your_server_name;Database=MyDatabase;Trusted_Connection=True;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
Console.Write("Enter First Name: ");
string firstName = Console.ReadLine();
Console.Write("Enter Last Name: ");
string lastName = Console.ReadLine();
string query = "INSERT INTO Persons (FirstName, LastName) VALUES (@FirstName, @LastName)";
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@FirstName", firstName);
command.Parameters.AddWithValue("@LastName", lastName);
int result = command.ExecuteNonQuery();
if (result > 0)
{
Console.WriteLine("Data inserted successfully.");
}
else
{
Console.WriteLine("Error inserting data.");
}
}
}
Console.ReadKey();
}
}
}
توضیحات کد- اتصال به دیتابیس: با استفاده از SqlConnection به دیتابیس متصل میشویم.
- دریافت ورودی از کاربر: نام و فامیل را از کاربر دریافت میکنیم.
- اجرای دستور SQL: با استفاده از SqlCommand دستور INSERT را اجرا میکنیم تا دادهها در جدول ذخیره شوند.
نحوه آدرسدهیدر رشته اتصال (connectionString)، باید نام سرور (Server)، نام دیتابیس (Database)، نام کاربری (User Id) و رمز عبور (Password) خود را جایگزین کنید.
این مراحل به شما کمک میکند تا بتوانید نام و فامیل را از طریق یک برنامه کنسول سیشارپ در دیتابیس SQL Server ذخیره کنید.
بیایید هر یک از این موارد را به تفصیل بررسی کنیم:
1. using
کلمه کلیدی using در سیشارپ برای دو منظور استفاده میشود:
- اضافه کردن فضای نام (Namespace):
using System;
using System.Data.SqlClient;
این دستورها به شما اجازه میدهند تا از کلاسها و متدهای موجود در این فضاهای نام بدون نیاز به نوشتن کامل نام آنها استفاده کنید.
- مدیریت منابع:
using (SqlConnection connection = new SqlConnection(connectionString))
{
// کد شما
}
این نوع using به شما کمک میکند تا منابعی مانند اتصالات دیتابیس به صورت خودکار پس از استفاده آزاد شوند. این کار باعث بهبود مدیریت حافظه و جلوگیری از نشت منابع میشود.
2. SqlConnection
کلاس SqlConnection برای ایجاد و مدیریت اتصال به دیتابیس SQL Server استفاده میشود. برای استفاده از آن، باید یک شیء از این کلاس ایجاد کنید و رشته اتصال (connection string) را به آن بدهید.
مثال:
string connectionString = "Server=your_server_name;Database=MyDatabase;Trusted_Connection=True;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// کد شما
}
در اینجا، connectionString شامل اطلاعات لازم برای اتصال به دیتابیس است و connection.Open() اتصال را باز میکند.
3. SqlCommand
کلاس SqlCommand برای اجرای دستورات SQL در دیتابیس استفاده میشود. این دستورات میتوانند شامل SELECT, INSERT, UPDATE, و DELETE باشند.
مثال:
string query = "INSERT INTO Persons (FirstName, LastName) VALUES (@FirstName, @LastName)";
using (SqlCommand command = new SqlCommand(query, connection))
{
// کد شما
}
در اینجا، query شامل دستور SQL است و command شیء SqlCommand است که این دستور را اجرا میکند.
4. command.Parameters.AddWithValue
این متد برای اضافه کردن پارامترها به دستور SQL استفاده میشود. پارامترها به جلوگیری از حملات SQL Injection کمک میکنند و کد را خواناتر میکنند.
مثال:
command.Parameters.AddWithValue("@FirstName", firstName);
command.Parameters.AddWithValue("@LastName", lastName);
در اینجا، @FirstName و @LastName پارامترهای دستور SQL هستند و firstName و lastName مقادیری هستند که از کاربر دریافت شدهاند.
خلاصه
- using:
برای اضافه کردن فضای نام و مدیریت منابع.
- SqlConnection:
برای ایجاد و مدیریت اتصال به دیتابیس.
- SqlCommand:
برای اجرای دستورات SQL.
- command.Parameters.AddWithValue:
برای اضافه کردن پارامترها به دستور SQL.
Trusted_Connection=True
در رشته اتصال (Connection String) به این معناست که از احراز هویت ویندوز (Windows Authentication) برای اتصال به SQL Server استفاده میشود. به جای استفاده از نام کاربری و رمز عبور مشخص، اتصال با استفاده از اعتبارنامههای ویندوزی که کاربر فعلی سیستم دارد، انجام میشود.
مزایای استفاده از Trusted_Connection=True:- امنیت بیشتر: نیازی به ذخیره نام کاربری و رمز عبور در کد نیست، که این امر امنیت را افزایش میدهد.
- مدیریت سادهتر: مدیریت کاربران و دسترسیها از طریق Active Directory انجام میشود.
- یکپارچگی با سیستم عامل: کاربران به طور خودکار با استفاده از اعتبارنامههای ویندوزی خود احراز هویت میشوند.
مثال:فرض کنید شما یک رشته اتصال به این شکل دارید:
string connectionString = "Server=your_server_name;Database=MyDatabase;Trusted_Connection=True;";
در اینجا، Trusted_Connection=True به SQL Server میگوید که از اعتبارنامههای ویندوزی برای احراز هویت استفاده کند.
مقایسه با احراز هویت SQL Server:در مقابل، اگر از احراز هویت SQL Server استفاده کنید، رشته اتصال شما ممکن است به این شکل باشد:
string connectionString = "Server=your_server_name;Database=MyDatabase;User Id=myUsername;Password=myPassword;";
در این حالت، شما باید نام کاربری و رمز عبور را به صورت صریح در رشته اتصال وارد کنید.
نتیجهگیری:استفاده از Trusted_Connection=True برای بسیاری از برنامهها به دلیل امنیت و سادگی مدیریت، توصیه میشود.
برای ذخیره، نمایش، بروزرسانی و حذف نام و فامیل در یک دیتابیس SQL Server با استفاده از سیشارپ و کنسول، میتوانید از مراحل زیر پیروی کنید:
1. ایجاد دیتابیس و جدول در SQL Serverابتدا باید یک دیتابیس و یک جدول برای ذخیره اطلاعات ایجاد کنید. به عنوان مثال، میتوانید از کد زیر برای ایجاد یک دیتابیس و جدول استفاده کنید:
CREATE DATABASE SampleDB;
GO
USE SampleDB;
GO
CREATE TABLE People (
Id INT PRIMARY KEY IDENTITY(1,1),
FirstName NVARCHAR(50),
LastName NVARCHAR(50)
);
GO
2. ایجاد پروژه کنسول در سیشارپیک پروژه کنسول جدید در ویژوال استودیو ایجاد کنید.
3. اضافه کردن کتابخانههای مورد نیازباید کتابخانههای System.Data.SqlClient را به پروژه اضافه کنید. این کار را میتوانید از طریق NuGet Package Manager انجام دهید.
4. کد برای اتصال به دیتابیس و انجام عملیات CRUDدر اینجا نمونه کدی برای انجام عملیات ذخیره، نمایش، بروزرسانی و حذف آورده شده است:
using System;
using System.Data.SqlClient;
class Program
{
static string connectionString = "Server=your_server_name;Database=SampleDB;Trusted_Connection=True;";
static void Main(string[] args)
{
InsertPerson("Ali", "Rezaei");
DisplayPeople();
UpdatePerson(1, "Mohammad", "Rezaei");
DisplayPeople();
DeletePerson(1);
DisplayPeople();
}
static void InsertPerson(string firstName, string lastName)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string query = "INSERT INTO People (FirstName, LastName) VALUES (@FirstName, @LastName)";
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@FirstName", firstName);
command.Parameters.AddWithValue("@LastName", lastName);
command.ExecuteNonQuery();
}
}
}
static void DisplayPeople()
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string query = "SELECT * FROM People";
using (SqlCommand command = new SqlCommand(query, connection))
{
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"Id: {reader["Id"]}, FirstName: {reader["FirstName"]}, LastName: {reader["LastName"]}");
}
}
}
}
}
static void UpdatePerson(int id, string firstName, string lastName)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string query = "UPDATE People SET FirstName = @FirstName, LastName = @LastName WHERE Id = @Id";
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@Id", id);
command.Parameters.AddWithValue("@FirstName", firstName);
command.Parameters.AddWithValue("@LastName", lastName);
command.ExecuteNonQuery();
}
}
}
static void DeletePerson(int id)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string query = "DELETE FROM People WHERE Id = @Id";
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@Id", id);
command.ExecuteNonQuery();
}
}
}
}
توضیحات:- اتصال به دیتابیس: با استفاده از SqlConnection به دیتابیس متصل میشویم.
- درج اطلاعات: با استفاده از INSERT INTO اطلاعات جدید را به جدول اضافه میکنیم.
- نمایش اطلاعات: با استفاده از SELECT اطلاعات موجود در جدول را واکشی و نمایش میدهیم.
- بروزرسانی اطلاعات: با استفاده از UPDATE اطلاعات موجود را بروزرسانی میکنیم.
- حذف اطلاعات: با استفاده از DELETE اطلاعات مورد نظر را از جدول حذف میکنیم.
برای دریافت نام و فامیل از کاربر و ذخیره آنها در دیتابیس SQL Server با استفاده از سیشارپ و کنسول، میتوانید از مراحل زیر پیروی کنید:
1. ایجاد دیتابیس و جدول در SQL Serverابتدا باید یک دیتابیس و یک جدول برای ذخیره اطلاعات ایجاد کنید. به عنوان مثال، میتوانید از کد زیر برای ایجاد یک دیتابیس و جدول استفاده کنید:
CREATE DATABASE SampleDB;
GO
USE SampleDB;
GO
CREATE TABLE People (
Id INT PRIMARY KEY IDENTITY(1,1),
FirstName NVARCHAR(50),
LastName NVARCHAR(50)
);
GO
2. ایجاد پروژه کنسول در سیشارپیک پروژه کنسول جدید در ویژوال استودیو ایجاد کنید.
3. اضافه کردن کتابخانههای مورد نیازباید کتابخانههای System.Data.SqlClient را به پروژه اضافه کنید. این کار را میتوانید از طریق NuGet Package Manager انجام دهید.
4. کد برای اتصال به دیتابیس و انجام عملیات CRUDدر اینجا نمونه کدی برای انجام عملیات دریافت، ذخیره، نمایش، بروزرسانی و حذف آورده شده است:
using System;
using System.Data.SqlClient;
class Program
{
static string connectionString = "Server=your_server_name;Database=SampleDB;Trusted_Connection=True;";
static void Main(string[] args)
{
while (true)
{
Console.WriteLine("Choose an option:");
Console.WriteLine("1. Insert Person");
Console.WriteLine("2. Display People");
Console.WriteLine("3. Update Person");
Console.WriteLine("4. Delete Person");
Console.WriteLine("5. Exit");
var choice = Console.ReadLine();
switch (choice)
{
case "1":
Console.Write("Enter First Name: ");
var firstName = Console.ReadLine();
Console.Write("Enter Last Name: ");
var lastName = Console.ReadLine();
InsertPerson(firstName, lastName);
break;
case "2":
DisplayPeople();
break;
case "3":
Console.Write("Enter ID of the person to update: ");
var idToUpdate = int.Parse(Console.ReadLine());
Console.Write("Enter new First Name: ");
var newFirstName = Console.ReadLine();
Console.Write("Enter new Last Name: ");
var newLastName = Console.ReadLine();
UpdatePerson(idToUpdate, newFirstName, newLastName);
break;
case "4":
Console.Write("Enter ID of the person to delete: ");
var idToDelete = int.Parse(Console.ReadLine());
DeletePerson(idToDelete);
break;
case "5":
return;
default:
Console.WriteLine("Invalid choice. Please try again.");
break;
}
}
}
static void InsertPerson(string firstName, string lastName)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string query = "INSERT INTO People (FirstName, LastName) VALUES (@FirstName, @LastName)";
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@FirstName", firstName);
command.Parameters.AddWithValue("@LastName", lastName);
command.ExecuteNonQuery();
}
}
}
static void DisplayPeople()
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string query = "SELECT * FROM People";
using (SqlCommand command = new SqlCommand(query, connection))
{
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"Id: {reader["Id"]}, FirstName: {reader["FirstName"]}, LastName: {reader["LastName"]}");
}
}
}
}
}
static void UpdatePerson(int id, string firstName, string lastName)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string query = "UPDATE People SET FirstName = @FirstName, LastName = @LastName WHERE Id = @Id";
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@Id", id);
command.Parameters.AddWithValue("@FirstName", firstName);
command.Parameters.AddWithValue("@LastName", lastName);
command.ExecuteNonQuery();
}
}
}
static void DeletePerson(int id)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string query = "DELETE FROM People WHERE Id = @Id";
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@Id", id);
command.ExecuteNonQuery();
}
}
}
}
توضیحات:- اتصال به دیتابیس: با استفاده از SqlConnection به دیتابیس متصل میشویم.
- درج اطلاعات: با استفاده از INSERT INTO اطلاعات جدید را به جدول اضافه میکنیم.
- نمایش اطلاعات: با استفاده از SELECT اطلاعات موجود در جدول را واکشی و نمایش میدهیم.
- بروزرسانی اطلاعات: با استفاده از UPDATE اطلاعات موجود را بروزرسانی میکنیم.
- حذف اطلاعات: با استفاده از DELETE اطلاعات مورد نظر را از جدول حذف میکنیم.
پروژه ASP.Net Core MVC (وب و سی شارپ)
بیایید هر یک از این موارد را به تفصیل بررسی کنیم: 1. using کلمه کلیدی using در سیشارپ برای دو منظور
command.ExecuteNonQuery
یک متد در کلاس SqlCommand است که برای اجرای دستورات SQL که دادهای را برنمیگردانند، مانند INSERT, UPDATE, DELETE و یا دستورات DDL (مانند CREATE TABLE یا ALTER TABLE) استفاده میشود. این متد تعداد ردیفهای تحت تأثیر قرار گرفته توسط دستور SQL را به عنوان یک عدد صحیح (integer) برمیگرداند.
مثال:فرض کنید میخواهید یک رکورد جدید به جدول Persons اضافه کنید:
string query = "INSERT INTO Persons (FirstName, LastName) VALUES (@FirstName, @LastName)";
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@FirstName", firstName);
command.Parameters.AddWithValue("@LastName", lastName);
int result = command.ExecuteNonQuery();
if (result > 0)
{
Console.WriteLine("Data inserted successfully.");
}
else
{
Console.WriteLine("Error inserting data.");
}
}
توضیحات:- اجرای دستور: command.ExecuteNonQuery() دستور SQL را اجرا میکند.
- برگرداندن تعداد ردیفهای تحت تأثیر: این متد تعداد ردیفهایی که تحت تأثیر قرار گرفتهاند را برمیگرداند. برای مثال، اگر یک رکورد جدید اضافه شود، مقدار برگشتی 1 خواهد بود.
- مدیریت خطاها: میتوانید از مقدار برگشتی برای بررسی موفقیت یا شکست عملیات استفاده کنید.
کاربردها:- دستورات INSERT: برای اضافه کردن رکوردهای جدید.
- دستورات UPDATE: برای بهروزرسانی رکوردهای موجود.
- دستورات DELETE: برای حذف رکوردها.
- دستورات DDL: برای ایجاد یا تغییر ساختار جداول و دیتابیسها.
1.2M حجم رسانه بالاست
مشاهده در ایتا
در سیشارپ، ویندوز فرمها (Windows Forms) یکی از روشهای محبوب برای ساخت برنامههای کاربردی با رابط کاربری گرافیکی (GUI) هستند. آیا به کمک خاصی نیاز دارید یا میخواهید یک پروژه جدید را شروع کنید؟
برای شروع یک پروژه ساده ویندوز فرم، میتوانید مراحل زیر را دنبال کنید:
- ایجاد پروژه جدید:
- ویژوال استودیو را باز کنید.
- از منوی "File" گزینه "New" و سپس "Project" را انتخاب کنید.
- در پنجره باز شده، "Windows Forms App (.NET Framework)" را انتخاب کنید و نام پروژه را وارد کنید.
- طراحی فرم:
- پس از ایجاد پروژه، یک فرم خالی به شما نمایش داده میشود.
- از جعبه ابزار (Toolbox) میتوانید کنترلهای مختلف مانند دکمهها، برچسبها و جعبههای متنی را به فرم اضافه کنید.
- نوشتن کد:
- روی کنترلهای اضافه شده به فرم دوبار کلیک کنید تا به بخش کد مربوط به آن کنترل هدایت شوید.
- میتوانید رویدادهای مختلف مانند کلیک دکمه را مدیریت کنید. به عنوان مثال:
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Hello, World!");
}
- اجرای برنامه:
- با فشردن کلید F5 یا کلیک روی دکمه "Start" در ویژوال استودیو، برنامه خود را اجرا کنید.
تفاوت دات نت فرمورک و دانت در ویندوز فرم
دات نت (.NET) یک پلتفرم جامع برای توسعه نرمافزار است که توسط مایکروسافت ارائه شده است. این پلتفرم شامل زبانهای برنامهنویسی، فریمورکها، ابزارها و کتابخانههایی است که به توسعهدهندگان کمک میکنند برنامههای متنوعی بسازند.
اجزای اصلی دات نت
1- CLR (Common Language Runtime):
این جزو اصلی دات نت است که وظیفه اجرای کد، مدیریت حافظه، امنیت و مدیریت نخها (Threads) را بر عهده دارد.
2- FCL (Framework Class Library):
مجموعهای از کتابخانههای کد که شامل کلاسها و توابعی برای تعامل با پایگاه داده، دسترسی به سیستم فایل، شبکه و توسعه رابط کاربری گرافیکی (GUI) است.
تفاوت دات نت فرمورک و دات نت
1- پلتفرمهای پشتیبانی شده:
- .NET Framework:
تنها برای سیستمعامل ویندوز طراحی شده است.
- .NET (قبلاً .NET Core):
یک پروژه متنباز است که بر روی پلتفرمهای مختلفی مانند ویندوز، لینوکس و macOS قابل اجرا است.
2- کتابخانهها و ابزارها:
- .NET Framework:
شامل مجموعهای از کتابخانهها و ابزارهای استاندارد برای توسعه برنامههای ویندوزی است.
- .NET:
علاوه بر کتابخانههای استاندارد، از ابزارها و کتابخانههای جدیدتری بهره میبرد که برای توسعه برنامههای چندپلتفرمی مناسب هستند.
3- عملکرد و بهینهسازی:
- .NET Framework:
بهینهسازیهای خاصی برای ویندوز دارد.
- .NET:
بهینهسازیهای بیشتری دارد و عملکرد بهتری در پلتفرمهای مختلف ارائه میدهد.
4- مدلهای برنامهنویسی:
- .NET Framework:
بیشتر برای برنامههای ویندوزی مانند WPF و WinForms استفاده میشود.
- .NET:
علاوه بر برنامههای ویندوزی، برای توسعه برنامههای وب (مانند ASP.NET), برنامههای موبایل (مانند Xamarin) و برنامههای سرویس و پسزمینه (مانند Web API و Worker Services) نیز استفاده میشود.