PDA

View Full Version : استفاده از پارامتر ها در نمايش اطلاعات



mohsen.nsb44
پنج شنبه 17 تیر 1389, 09:32 صبح
سلام براي نمايش اطلاعات جستجو و حذف و ويرايش چطور مي شه از پارامتر ها استفاده كرد؟ من براي نمايش يك اسكيو ال ديتا سورس مي زاشتم و گريد ويو به اون متصل مي كردم اما اين كار از نظر امنيتي ضعيفه حال مي خواستم بدونم از طريق پارامتر ها و استور پروسيجر ها چطور ميشه اين كار رو انجام داد

Mostafa_Dindar
پنج شنبه 17 تیر 1389, 09:38 صبح
سلام براي نمايش اطلاعات جستجو و حذف و ويرايش چطور مي شه از پارامتر ها استفاده كرد؟ من براي نمايش يك اسكيو ال ديتا سورس مي زاشتم و گريد ويو به اون متصل مي كردم اما اين كار از نظر امنيتي ضعيفه حال مي خواستم بدونم از طريق پارامتر ها و استور پروسيجر ها چطور ميشه اين كار رو انجام داد

استفاده از SQLDataSource ارتباطی با امنیت ندارد , حتی با SQLDataSource هم میتونید از sp ها استفاده کنید.

سربلند باشید

mohsen.nsb44
پنج شنبه 17 تیر 1389, 10:14 صبح
استفاده از SQLDataSource ارتباطی با امنیت ندارد , حتی با SQLDataSource هم میتونید از sp ها استفاده کنید.

سربلند باشید
ميشه بگيد چطور ميشه با SQLDataSource هم از sp ها يا پارامتر ها استفاده كرد؟؟؟؟؟؟؟؟؟؟

rana-writes
پنج شنبه 17 تیر 1389, 12:12 عصر
سلام
سعی میکنم تا غروب یه جواب کامل، هم اتصال به گرید، هم از طریق کدنویسی رو براتون از طریق پارامترها بذارم
موفق باشید

rana-writes
پنج شنبه 17 تیر 1389, 18:01 عصر
سلام
فرض کنین فرمی داریم که کاربران آنلاین رو نشون میده، مثل همین فروم، که با کلیک بر روی نام هر کاربر، اطلاعات اون کاربر توی صفحه پروفایل دیده میشه
اولین چیزی که میخوایم یه StoredProcedure برای گرفتن اطلاعات از بانکه و پارامتری که بهش ارسال میشه، نام کاربریه
یه استور مثل این رو می نویسیم:


CREATE PROCEDURE dbo.Ha_TestStor
(@UserName nvarchar(10))
AS
BEGIN TRANSACTION
SELECT UserName, FName,Lname, Email,MembershipDay, LastVisit
FROM Halgheh_Personal
WHERE (UserName = @UserName)

IF @@ERROR<>0
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION
GO


بعد هم مقدمات اتصال به بانک رو آماده میکنیم
ConnectionString که توی فایل وب کانفیگ وجود داره و با یه تابع از کلاس ConnectionManager ارتباط به بانک رو می نویسیم با این کد:


publicstatic SqlConnection ConnectToDB()
{

string ConnectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
SqlConnection connection = newSqlConnection(ConnectionString);

try

{

connection.Open();

}
catch (SqlException)

{
}
return connection;
}

بعد نوبت به تابعی میرسه که باید اطلاعات رو بخونه
من این تابع رو توی کلاسی به اسم LoginDataAccess قرار دادم
این تابع باید از نوع SqlDataReader باشه به این شکل:


public staticSqlDataReader ShowProfile(string UserName)
{

SqlConnection connection = ConnectionManager.ConnectToDB();
SqlCommand command = new SqlCommand("Ha_TestStor", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@UserName", SqlDbType.NVarChar).Value = UserName;
SqlDataReader reader = command.ExecuteReader(CommandBehavior.SingleResult | CommandBehavior.CloseConnection);
return reader;
}

خب تا اینجا اطلاعات رو گرفتیم
گفتیم که این تابع باید تو صفحه نمایش پروفایل فراخوانی بشه، یعنی وقتی روی نام کاربری یه نفر کلیک شد، اطلاعاتش توی صفحه ی پروفایلش دیده بشه، طبیعتا باید این کد رو توی Page_Load صفحه مورد نظر قرار بدیم من اینجا با QueryString نام کاربری رو به صفحه پروفایل ارسال کردم، پارامتری که شما استفاده میکنین میتونه از هر طریق دیگه ای فراخوانی بشه
حالا برای کارهای دیگه توی قسمتهایی که نیاز داریم استفاده میکنیم
برای فراخوانی اطلاعات به این شکل عمل می کنیم:


string UserName = Request.QueryString["Profile"];
using (SqlDataReader ReadProfile = LoginDataAccess.ShowProfile(UserName))
{

if (ReadProfile.Read())
{

LblUsername.Text = Convert.ToString(ReadProfile["UserName"]);
string ImgPath = Convert.ToString(ReadProfile["Pic"]);
LblFname.Text = Convert.ToString(ReadProfile["FName"]);
LblLname.Text = Convert.ToString(ReadProfile["Lname"]);
LblEmail.Text = Convert.ToString(ReadProfile["Email"]);
LblMembershipDay.Text = Convert.ToString(ReadProfile["MembershipDay"]);
LblLastVisit.Text = Convert.ToString(ReadProfile["LastVisit"]);
LblVisitTimes.Text = Convert.ToString(ReadProfile["VisitTimes"]);
}
}

به این شکل، Label های توی صفحه با مقادیر Reader پر میشن
موفق باشین
برای اتصال به گرید هم باید به شکل ویزاردی عمل کنیم که مراحل رو ازش عکس میگیرم و اینجا خیلی زود قرار میدم
اگر سوالی بود بپرسین
موفق باشین

rana-writes
پنج شنبه 17 تیر 1389, 20:17 عصر
حالا میخوایم همین استور بالا رو توی یه گرید نمایش بدیم
اولین کاری که می کنیم اینه که یه SqlDataSource به صفحه اضافه میکنیم و بهش اسم میدیم و ConnectionStringش رو انتخاب میکنیم.
اگه کانکشن استرینگ توی وب کانفیگ درست ایجاد شده باشه، اسمش به طور خودکار میاد
حالا میرسیم به این صفحه چون میخوایم از StoreProcedure استفاده کنیم، گزینه اول رو انتخاب میکنیم و Next میزنیم

http://barnamenevis.org/forum/attachment.php?attachmentid=52542&stc=1&d=1278604732

توی این صفحه همونطور که توی عکس نشون داده شده، لیست Stored های ایجاد شده دیده میشه و استور موردنظر رو انتخاب میکنیم و بازم Next


http://barnamenevis.org/forum/attachment.php?attachmentid=52543&stc=1&d=1278604732

توی این صفحه، منبع پارامتر مورد نظر رو انتخاب میکنیم که میتونه Session، QueryString و ... باشه


http://barnamenevis.org/forum/attachment.php?attachmentid=52544&stc=1&d=1278604732
باید توجه کنیم که Session یا QueryStringی که اسمش رو اینجا می نویسیم حتما توی برنامه ایجاد شده باشه که ما اینجا از QueryString استفاده کردیم پس انتخاب میکنیم و اسمش رو می نویسیم
به این شکل:

http://barnamenevis.org/forum/attachment.php?attachmentid=52545&stc=1&d=1278604732


توی صفحه بعد با کلیک روی TestQuery و انتخاب نام کاربری ای که وجود داره میتونیم صحت کار رو بررسی کنیم و در نهایت هم finish


http://barnamenevis.org/forum/attachment.php?attachmentid=52546&stc=1&d=1278604732
خب حالا یه GridView توی صفحه میندازیم و به این دیتاسورس متصلش میکنیم
و اگه با QueryString وارد این صفحه بشیم، مشخصات کاربر رو می بینیم

توی هر پست فقط میشه تا 5 تا فایل ضمیمه کرد، دیدن مشخصات کاربر رو توی پست بعدی میذارم

rana-writes
پنج شنبه 17 تیر 1389, 20:19 عصر
http://barnamenevis.org/forum/attachment.php?attachmentid=52547&stc=1&d=1278605249



در نهایت هم اتصال به گرید که همه بلدیم :)


موفق باشین
پ . ن : کیفیت عکسها رو برای اینکه حجمش کم بشه پایین آوردم