توجه: این یادداشت قدیمی و مربوط به وبلاگ‌های پیشین است. برای اطلاعات بیشتر آنچه گذشت را بخوانید.


ASP.NET 2.0 سرویس‌هایی دارد مثل Membership, Role Management, Personalization که اطلاعاتی از آن‌ها باید در دیتابیس ذخیره شود،‌ در این مطلب قصد دارم راهی برای تنظیم SQL Server 2000 برای این قابلیت‌های ASP.NET 2.0 معرفی کنم.

مایکروسافت یک ویزارد برای تنظیم SQL Server برای ASP.NET 2.0 در نظر گرفته است که برای استفاده از آن باید به Command Prompt مربوط به Visual Studio 2005‌ بروید و دستور aspnet_regsql را تایپ کنید. بعد از اجرا یک ویزارد به نام ASP.NET SQL Server Setup Wizard‌ برای شما باز می‌شود که به کمک آن می‌توانید دیتابیس دلخواهی را برای استفاده از جداول سرویس‌های ASP.NET 2‌ تنظیم کنید. بعد از اتمام عملیات 11 جدول به دیتابیس شما اضافه می‌شود که همه آن‌ها با aspnet‌ شروع می‌شود (مثلا aspnet_Applications یا aspnet_Membership و ..)
البته اگر از سوییچ‌های مربوط به دستور aspnet_regsql‌ استفاده کنید می‌توانید هر کدام از سرویس‌ها را که بخواهید اضافه کنید. مثلا دستور aspnet_regsql.exe -E -S localhost -A mp جداول مربوط به سرویس‌های Membership و Profile‌ را به سرور لوکال‌هاست اضافه می‌کند. توضیحات کامل در مورد این دستور را اینجا ببینید.

پ.ن: یک domain‌ یرای سایت شخصی‌ام ثبت کرده‌ام و از این به بعد مقالات و نکات مربوط به برنامه‌نویسی را آنجا می‌نویسم و مطالب غیرتخصصی را اینجا در وبلاگ. البته هنوز هیچ کدی برای سایت شخصی ننوشته‌ام پس کمی باید صبر کنید.

توجه: این یادداشت قدیمی و مربوط به وبلاگ‌های پیشین است. برای اطلاعات بیشتر آنچه گذشت را بخوانید.


همه برنامه نویسانی که با برنامه های پایگاه داده سر و کار دارند، بعد از مدتی تازه به ارزش Stored Procedure ها پی می برند، کمی که می گذرد به این فکر می افتند که چقدر خوب بود اگر به جای اینکه برای هر جدول دیتابیس یک Stored Procedure بنویسند، می شد یک رویه ذخیره شده عمومی نوشت و با توجه به شرایط یک دستور پویا ساخت. اینجاست که به قابلیت های SQL Server  در این موارد می رسیم.

یکی از آنها که من می خواهم خیلی کوتاه معرفی اش کنم sp_executesql است که کارش اجرا کردن یک عبارت SQL است، همچنین به کمک آن می توانید رشته های پویایی که می سازید را اجرا کنید. به مثال زیر توجه کنید: فرض کنید که در پروژه یک سایت، 20 تا جدول داشته باشید و بخواهید از رویه های ذخیره شده استفاده کنید. اگر به صورت معمولی کار کنید برای هر جدول باید یک رویه ذخیره شده بسازید ولی اگر از sp_executesql به صورت زیر استفاده کنید تنها به یک Stored Procedure نیاز دارید.

CREATE PROCEDURE dbo.GeneralSelect @TableName NVARCHAR(50)
AS
DECLARE @SelectString NVARCHAR(100)
– ساخت یک دستور به صورت پویا
SET @SelectString = ‘SELECT * FROM ‘ +@TableName
EXEC sp_executesql @SelectString
GO

در این مثال همان طور که می بینید نام جدول را به رویه ذخیره شده پاس داده ایم و سپس یک عبارت select عمومی و پویا (بر اساس نام جدول) ساخته ایم. در نهایت رشته دستور تولید شده را به کمک EXEC کردن sp_executesql اجرا کرده ایم. شما می توانید با استفاده از قابلیت های Transact-SQL و کدنویسی مناسب در لایه داده ای برنامه ها، به مقدار زیادی از حجم کدهای تکراری و غیرضروری کم کنید، عبارت های پویای مناسبی تولید کنید و از زندگی لذت ببرید!

به همین بهانه خوب است اگر نگاهی به لیست رویه های ذخیره شده داخل SQL Server خود بکنید (با sp_ شروع می شوند)، چیزهای جالبی پیدا خواهید کرد و بعد از مدتی به این نتیجه می رسید که چقدر وقتتان را به خاطر عدم آگاهی از ویژگی های SQL Server تلف کرده اید !

توجه: این یادداشت قدیمی و مربوط به وبلاگ‌های پیشین است. برای اطلاعات بیشتر آنچه گذشت را بخوانید.


قسمت اول مجموعه یادداشت های کار با پایگاه داده در ASP.NET به چگونگی برقراری ارتباط با بانک اطلاعاتی image اختصاص داشت. یکی از مشکلاتی که ممکن است هنگام برقراری ارتباط با بانک اطلاعاتی به آن برخورد کنید مشکل شکست در لاگین یا Login Fails هست. اگر چنین خطایی را هنگام کار با برنامه وبی خود دریافت کرده اید این یادداشت در رفعش می تواند به شما کمک کند.

موضوع اصلی این است که شما برای دیتابیس های مختلف SQL Server می توانید کاربر تعریف کنید و به هر کاربر سطح دسترسی خاصی بدهید. مثلا کاربری را با سطح خواندنی در نظر بگیرید و رشته اتصال خود را زمانی که قرار است تنها گزارش گیری از بانک اطلاعاتی داشته باشید ( و نمی خواهید هیچ اطلاعاتی اضافه، حذف یا ویرایش کنید ) با استفاده از این کاربر تعریف کنید. SQL Server نقش ها ( Roles ) های مختلفی را در اختیار شما قرار می دهد مثلا : db_owner یا db_datareader و … .

هنگامی که دات نت فریم ورک را نصب می کنید یک یوزر جدید به ویندوز شما اضافه می شود. برای کار با پایگاه داده نیاز دارید که به این یوزر اجازه دسترسی به دیتابیس خود را بدهید. برای این کار مراحل زیر را دنبال کنید :

Enterprise Manager را باز کنید و به بخش Security بروید. روی قسمت Logins کلیک راست کنید و New Login را انتخاب کنید. پنجره جدیدی باز می شود. در برگه General این پنجره و از بخش Name با کلیک بر روی دکمه ای که در سمت راست هست ( برای browse کردن ) پنجره ای باز می شود که حاوی لیست تمام یوزرهای موجود روی سرور است. یوزر ASPNET را پیدا کنید و روی دکمه Add کلیک کنید. سپس Ok کنید. دوباره به پنجره New Login برمی گردید. در بخش Authentication گزینه Windows Authentication را انتخاب کنید. چیزهای دیگری که شاید مایل به تغییرشان باشید زبان و دیتابیس پیش فرض برای این یوزر است. به کمک برگه Server Roles می توانید نقش این یوزر در سرور را مشخص کنید. و در نهایت به کمک برگه  Database Access دیتابیس هایی که می خواهید یوزر ASPNET به آن ها دسترسی داشته باشد را مشخص کنید ( به همراه نقش های مورد نظر ). با کلیک بر روی Ok یوزر ASPNET به مجموعه یوزرهای SQL Server و نیز دیتابیس هایی که مشخص کرده اید اضافه می شود. بعدا می توانید داخل هر دیتابیس از طریق بخش Users میزان دسترسی به جداول را نیز کنترل کنید. این تصویر هم پنجره های مورد نظر این کار را نشان می دهد.

توجه: این یادداشت قدیمی و مربوط به وبلاگ‌های پیشین است. برای اطلاعات بیشتر آنچه گذشت را بخوانید.


در بخش اول با روش برقراری اتصال با پایگاه داده در ASP.NET آشنا شدید. در این یادداشت با استفاده از یک جدول نمونه ، عملیات اضافه کردن رکورد به دیتابیس را بررسی می کنیم. برای این کار هر دو روش عادی و استفاده از Stored Procedure را پیاده سازی می کنیم. اگر مطالب این یادداشت را به دقت مطالعه و تمرین کنید قادر خواهید بود تا عملیات معمول بانک های اطلاعاتی ( اضافه ، ویرایش و حذف ) را در برنامه های وبی خود انجام دهید چرا که تنها تفاوت این کارها در دستور SQL آنهاست.

افزودن رکورد به بانک اطلاعاتی

روند کلی این است که ابتدا رشته اتصال و عبارت SQL که دستور اضافه کردن را مشخص می کند بنویسید. بعد یک شی دستور بگیرید و پارامترهای مربوطه را به آن شی اضافه کنید. سپس یک کانکشن ایجاد کنید و دستور خود را اجرا کنید و در نهایت کانکشن را ببندید. همین ! حالا اجازه بدهید که این چند سطر را با هم گام به گام انجام دهیم:

گام اول. ساختن دیتابیس و جدول

یک دیتابیس جدید به نام TestDb در SQL Server بسازید. حالا یک جدول به نام Members ایجاد کنید. کد سازنده این جدول را در زیر می بینید ( می توانید اسکریپت ساخت جدول را از اینجا دانلود کنید و پس از ساختن دیتابیس از طریق Query Analyzer آن را اجرا کنید تا جدول را برای شما بسازد )

CREATE TABLE [Members] (
[UserID] [smallint] NOT NULL ,
[Username] [varchar] (10) NOT NULL ,
[Password] [varchar] (20) NOT NULL ,
[Email] [varchar] (50) NOT NULL ,
CONSTRAINT [PK_Members] PRIMARY KEY CLUSTERED
(
[UserID]
) ON [PRIMARY]
) ON [PRIMARY]
Go

گام دوم. تعريف پروژه جدید در ویژوال استودیو

یک پروژه Web Application را در ویژوال استودیو ایجاد کنید. نکته ای که امروز می خواهم به آن اشاره کنم ذخیره کردن رشته اتصال در فایل web.config است. برای این کار کد زیر را به این فایل اضافه کنید ( این کد داخل بلاک  نباشد )

به جای YOUR CONNECTION STRING رشته اتصال خود را قرار دهید ( در مورد رشته اتصال در یادداشت قبلی مفصل صحبت کردم )حالا می توانید در هر صفحه ای به کمک کد زیر رشته اتصال ذخیره شده را بازیابی کنید :

string ConnectionString=ConfigurationSettings.AppSettings["connectionstring"];

برای کسب اطلاعات بیشتر در مورد ذخیره کردن رشته اتصال در web.config این مقاله فارسی را بخوانید : ذخيره كردن Connection String در فايل Web.Config

توصیه امنیتی : هر زمان که رشته اتصال خود را به این شکل در web.config ذخیره می کنید بهتر است برای افزایش ایمنی آن را به صورت رمز شده ذخیره کنید. برای اطلاع از چگونگی رمز کردن اطلاعات مقاله فارسی زیر را مطالعه کنید : به رمز درآوردن اطلاعات

گام سوم. نوشتن کد صفحه

در این صفحه ما به سه عدد TextBox به نام های txtUsername و txtPassword و txtEmail نیاز داریم. یک دکمه هم برای ارسال فرم در نظر می گیرم به نام btnAdd . کد اضافه شدن اطلاعات فرم به بانک اطلاعاتی را در رویداد کلیک این دکمه می نویسیم. این کد را در زیر مشاهده می کنید :

private void btnAdd_Click(object sender, System.EventArgs e)
{
string connectionstring=ConfigurationSettings.AppSettings["connectionstring"];
string cText="Insert Into Members (Username,Password,Email ) Values  (@Username,@Password,@Email)";
       SqlConnection con=new SqlConnection (connectionstring);
       SqlCommand cmd=new SqlCommand (cText,con);
       cmd.Parameters.Add ("@Username",txtUsername.Text );
       cmd.Parameters.Add ("@Password",txtPassword.Text );
       cmd.Parameters.Add ("@Email",txtEmail.Text );
       con.Open ();
        cmd.ExecuteNonQuery ();
       con.Close ();
}

فراموش نکنید که Namespace های مورد نیاز را به صفحه اضافه کنید. همان طور که می بینید دستور SQL را مستقیما در کد خود نوشتیم و از طریق پارامترها آن را تکمیل کردیم. دقت کنید که متد Add مربوط به پارامترهای یک شی دستور به چند شکل دیگر هم قابل استفاده است ( مثلا می توانید نوع فیلد جدول یا سایز آن را مشخص کنید ) و این ساده ترین شکل استفاده از این متد است.

نکته برنامه نویسی : ممکن است با این روش نتوانید اطلاعات را به فارسی در دیتابیس خود ذخیره کنید. خوشبختانه آقای نوعی پور یادداشت مفصلی در این مورد نوشته است که مشکل ورود اطلاعات فارسی و راه حل آن را به طور کامل بررسی می کند. این یادداشت را می توانید از اینجا بخوانید : پاسخ به يک پرسش متداول برنامه‌نويسان مبتدي ASP.NET : فارسي در SQL Server

نکته امنیتی : در یک سیستم واقعی کلمه عبور را قبل از اضافه کردن به دیتابیس رمز کنید تا در صورتی که هکر به دیتابیس دسترسی پیدا کرد نتواند کلمات عبور کاربران سیستم را پیدا کند. مطمئن ترین روش Hash کردن کلمات عبور است. در این مورد به زودی مطلبی خواهم نوشت.

استفاده از Stored Procedure

همان طور که در ابتدای این یادداشت ها هم گفتم پیش فرض من این است که شما مفاهیم اصلی مربوط به کار با پایگاه داده و از جمله زبان SQL را می دانید. استفاده از روال های ذخیره شده کارآیی و سرعت سیستم را بالا می برد. وقتی یک روال ذخیره شده را در دیتابیس قرار می دهیم برای مراجعات بعدی دیگر پارسر و کامپایلر آن را بررسی نمی کنند و از نسخه کامپایل شده بهینه آن استفاده می کنند. به علاوه با کمک Transact-SQL می توانیم رویه های ذخیره شده پیشرفته ای را بنویسیم یا مثلا یک سری دستور را به صورت گروهی اجرا کنیم.

برای مثالی که در این یادداشت با آن روبرو بودیم Stored Procedure زیر که همان کار افزودن رکورد را انجام می دهد می نویسیم ( این روال را از طریق Query Analyzer در دیتابیس TestDb اجرا کنید تا به مجموعه روال های ذخیره شده این دیتابیس اضافه شود )

Create Procedure InsertProc
(
   @Username varchar(10),
   @Password varchar (20),
   @Email varchar (50)
)
As
Insert Into Members (Username,Password,Email ) Values (@Username,@Password,@Email)

حالا برای این که عملیات را با استفاده از این روال ذخیره شده انجام دهیم شی دستور SQL را به صورت زیر بازنویسی می کنیم ( قسمت های Bold شده را نگاه کنید ) :

private void btnAdd_Click(object sender, System.EventArgs e)
{
…..
SqlCommand cmd=new SqlCommand ();
cmd.CommandType=System.Data.CommandType.StoredProcedure;
cmd.CommandText="InsertProc";
cmd.Parameters.Add ("@Username",txtUsername.Text );
….
}

در این روش دیگر نیازی به تعریف  cText ( همان دستور SQL ) نداریم چرا که این دستور را در داخل رویه ذخیره شده خود نوشته ایم. همان طور که می بینید ابتدا Type دستور را مشخص کردیم و سپس نام رویه ذخیره شده خود را به ویژگی CommandText شی دستور نسبت دادیم.

دانلود فایل پروژه : پروژه دات نتی مربوط به این یادداشت را از این آدرس می توانید دانلود کنید. برای استفاده از این پروژه بعد از ساخت دیتابیس و جدول مربوطه، در فایل  Web.Config رشته اتصال خود را به جای عبارت YOUR CONNECTION STRING  قرار دهید ( توضیحات گام دوم را بخوانید ). سپس پروژه را کامپایل و اجرا کنید.

معرفی قسمت بعد این مجموعه مقالات : در قسمت بعد مقالات کار با پایگاه داده در ASP.NET، به سراغ گزارش گیری و نمایش اطلاعات ( استفاده از دستور Select ) و همچنین امکانات دات نت برای نمایش اطلاعات ( از قبیل Repeater , Data List , DataGrid ) می رویم. در ضمن این دیتابیس و جدول را نگهدارید چون بعدا برای نوشتن یک سیستم Login ساده از آن استفاده خواهیم کرد.

توجه: این یادداشت قدیمی و مربوط به وبلاگ‌های پیشین است. برای اطلاعات بیشتر آنچه گذشت را بخوانید.


به نظرم رسید یادداشت هایی در مورد کار با پایگاه داده در asp.net بنویسم. نخستین بخش از این مجموعه به ایجاد اتصال به دیتابیس اختصاص دارد البته در مورد ODBC صحبت نمی کنیم. پیش فرض من در این یادداشت ها این است که خواننده با زبان SQL آشناست و اطلاعات مقدماتی در مورد ado.net و کلاس های دیتا در فریم ورک دات نت را دارد. پس اگر این طور نیست وقت خودتتون را با این مقالات تلف نکنید.البته قسمت اول چیز خاصی نداره و همه می توانند از آن استفاده کنند.

روند کلی برقراری اتصال با دیتابیس
1-  رشته اتصال ( connection string ) مناسب را تعریف کنید
2- کلاس مناسب را به برنامه خود وارد ( import ) کنید.
3-یک شی کانکشن تعریف کنید و رشته اتصال را به سازنده آن پاس کنید.
4- شی کانکشن را باز کنید.
5-عملیات مورد نظر را در دیتابیس انجام دهید *
6- شی کانکشن را ببندید.
* برای انجام هر عملیاتی از جمله اضافه یا حذف یا ویرایش یا جستجو باید اشیایی برای انجام آن عملیات از کلاس مربوطه بگیرید که در قسمت های بعدی در موردشان توضیح خواهم داد 

چگونه با یک دیتابیس ارتباط برقرار کنیم؟
هدف ایجاد اتصال به یک بانک اطلاعاتی ، باز کردن اتصال و بستن آن است . بر اساس توضیحات بالا گام به گام پیش می رویم :
1- تعریف رشته اتصال : برای برقراری ارتباط با اکسس از رشته اتصالی مثل رشته زیر استفاده می کنیم.

string connectionString ="Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=C:\\database.mdb";

در رشته اتصال بالا بعد از Data Source آدرس محل قرار گرفتن فایل اکسس خود را مشخص کنید. اگر می خواهید از اس کیو ال سرور استفاده کنید رشته اتصال شما چیزی شبیه به متن زیر خواهد بود :

string connectionString="server=127.0.0.1;database=
MY_DATABASE;UID=MY_USERNAME;PWD=MY_PASSWORD"

در رشته اتصال بالا بعد از server نام و یا ip سرور مورد نظر را وارد می کنید. به MY_DATABASE نام دیتابیس و همین طور نام کاربری و کلمه عبور را برای دسترسی به سرور مشخص کنید.

توجه کنید که رشته های اتصال پارامترهای دیگری هم دارند ولی من ساده ترین مدل را بررسی کردم. برای کسب اطلاعات بیشتر در مورد نحوه نوشتن رشته های اتصال به سایت زیر مراجعه کنید : http://www.connectionstrings.com

2- اضافه کردن کلاس مناسب به کد صفحه : برای اکسس از System.Data.OleDb استفاده کنید و برای SQL Server از System.Data.SqlClient. اگر از ویژوال استودیو دات نت استفاده می کنید کافی است که آن را به ابتدای کد صفحه اضافه کنید

using System.Data.OleDb;

و اگر کدهای دات نتی را در خود صفحه aspx می نویسید در ابتدای صفحه فضا نام مربوط را import  کنید.

<%@ import Namespace="System.Data.OleDb" %>

3- تعریف شی کانکشن :  برای ایجاد این شی در صورت استفاده از System.Data.OleDb خواهیم داشت :

OleDbConnection myConnection=new OleDbConnection ( connectionString );

و اگر از System.Data.SqlClient استفاده کرده اید مطابق مثال زیر به جای OleDbConnection از SqlConnection استفاده می کنید  :

SqlConnection myConnection = new SqlConnection( connectionString );

4- باز کردن شی کانکشن : این کار را به کمک متد Open شی کانکشن تعریف شده انجام می دهیم :

myConnection.Open ();

5- انجام عملیات مورد نظر در دیتابیس : در این یادداشت ما هیچ اضافه ، حذف یا ویرایشی را در دیتابیس انجام نمی دهیم.
6 – بستن شی کانکشن : این کار به کمک متد Close انجام می شود.

myConnection.Close ();

دانلود کد نمونه برای SQL Server
این پروژه را به کمک ویژوال استودیو باز کنید ، در کد صفحه WebForm1.aspx مقدار رشته اتصال را بر اساس دیتابیس خود ست کنید. پروژه را مجددا کامپایل و اجرا کنید. در این کد از ساختار Try/Catch استفاده کرده ام ( توضیحات بیشتر در مورد ساختارهای مدیریت استثنا در سی شارپ را در این مقاله بخوانید ) همچنین قبل از بستن کانکشن، به کمک یک عبارت شرطی باز بودن آن را چک می کنم.

توجه: این یادداشت قدیمی و مربوط به وبلاگ‌های پیشین است. برای اطلاعات بیشتر آنچه گذشت را بخوانید.


چند روز پیش یکی از دوستانم در دانشگاه از من سوالی در مورد نحوه ذخیره تصاویر در SQL Server پرسید. من می دانستم که نوع داده ای image برای انجام این کار استفاده می شود ولی هیچ گاه از آن استفاده نکرده بودم و بنابراین هیچ ایده ای از نحوه ارسال اطلاعات برای ذخیره شدن در بانک اطلاعاتی نداشتم. فردای آن روز ایمیلی به دوستم زدم و لینک یک مقاله خوب از codeproject را برایش فرستادم که نحوه انجام این کار را توضیح می داد. به نظرم آمد که آن مقاله را برای وبلاگم هم ترجمه کنم. این مقاله یک سورس هم دارد که می توانید آن را از اینجا دانلود کنید.

مرور راه حل

به طور معمول، تصاویر در پوشه های روی وب سرور ذخیره می شوند نه در دیتابیس، این اما برای فایل های با حجم بالاست. در بعضی موارد ، مثلا یک بانک ، آن ها از تصویر امضای مشتری اسکن می گیرند و آن را در بانک اطلاعاتی خود ذخیره می کنند.

- الگوی بانک اطلاعاتی مورد استفاده : مایکروسافت SQL Server 2000 را به عنوان بانک اطلاعاتی استفاده می کنیم، من از نوع داده ای image استفاده خواهم کرد. نوع داده ای image برای ذخیره کردن تصاویر در بانک اطلاعاتی استفاده می شود.
- کنترل هایی که در این برنامه از آن ها استفاده می کنیم عبارتند از : System.Web.UI.HtmlControls.HtmlInputFile و System.Web.UI.WebControls.TextBox و System.Web.UI.WebControls.Button
-و فضا نام هایی که در این برنامه از آن ها استفاده می کنیم عبارتند از: System.Data.SqlClient و System.Drawing و System.Data و System.IO و System.Drawing.Imaging

راه حل همراه با کد

از کلاس HtmlInputFile  برای ساختن کنترل آپلود فایل استفاده می کنیم. مثال زیر یک فایل ASPX کامل است که به کاربر این امکان را می دهد که یک تصویر و توضیح آن را آپلود و به بانک اطلاعاتی اضافه کند . متد OnUpload تصویر و توضیح آن را در یک جدول بانک اطلاعاتی SQL Server به نام Pictures در دیتابیس MyData اضافه می کند.

// سورس کد ذخیره تصویر در بانک اطلاعاتی
public void OnUpload(Object sender, EventArgs e)
{
// ساختن یک byte[] از فایل ورودی
int len = Upload.PostedFile.ContentLength;
byte[] pic = new byte[len];
    Upload.PostedFile.InputStream.Read (pic, 0, len);
// افزودن تصویر و توضیح تصویر به بانک اطلاعاتی
    SqlConnection connection = new
      SqlConnection (@"server=127.0.0.1;database=MyData;uid=sa;pwd=yourpass");
try
    {
        connection.Open ();
        SqlCommand cmd = new SqlCommand ("insert into Image "
          + "(Picture, Comment) values (@pic, @text)", connection);
        cmd.Parameters.Add ("@pic", pic);
        cmd.Parameters.Add ("@text", Comment.Text);
        cmd.ExecuteNonQuery ();
    }
finally
    {
        connection.Close ();
    }
}

تابعی که در بالا معرفی کردیم توسط ویژگی OnClick یک دکمه فراخوانی می شود.

چگونه می توانم یک تصویر را از دیتابیس خوانده و در صفحه وب نمایش دهم؟

اینجا من از یک صفحه وب برای نمایش تصویر استفاده کرده ام، کد زیر برای نمایش تصویر در صفحه وب استفاده می شود

private void Page_Load(object sender, System.EventArgs e)
{
    MemoryStream stream = new MemoryStream ();
    SqlConnection connection = new
      SqlConnection (@"server=127.0.0.1;database=MyData;uid=sa;pwd=yourpass");
try
    {
        connection.Open ();
        SqlCommand command = new
          SqlCommand ("select Picture from Image", connection);
byte[] image = (byte[]) command.ExecuteScalar ();  
        stream.Write (image, 0, image.Length);
        Bitmap bitmap = new Bitmap (stream);
        Response.ContentType = "image/gif";
        bitmap.Save (Response.OutputStream, ImageFormat.Gif);
    }
finally
    {
        connection.Close ();
        stream.Close ();
    }
}

توابع GDI+ ویژگی های پیشرفته زیادی برای مدیریت و دستکاری داده های تصویری پیشنهاد می کنند. مثال این مقاله نگاه سریعی به کارهایی که از طریق فضا نام های

System.Drawing.Imaging

  و 

System.Drawing

  می توانید انجام دهید دارد. به عنوان مثال شما می توانید برنامه را برای ذخیره و مدیریت تصاویر بر روی وب گسترش دهید یا می توانید یک برنامه ساده بنویسید که به کاربر امکان ویرایش و دستکاری تصاویر را می دهد.

چگونه از این کدها استفاده کنیم؟

برای دریافت سورس پروژه اینجا کلیک کنید. ابتدا یک دایرکتوری مجازی بسازید و فایل های پروژه را در آن قرار بدهید ، سپس رشته اتصال به بانک اطلاعاتی را تغییر دهید ( بر اساس سرور و نام کاربری و کلمه عبور و نام دیتابیس خودتان آن را ست کنید ) حالا می توانید از این پروژه استفاده کنید.