PDA

View Full Version : مقاله ای برای مهاجرت از Wizard به coding



merlin_vista
چهارشنبه 25 مهر 1386, 11:22 صبح
سلام :
آقا من برای اتصال به SQL از روش ویزارد استفاده میکنم ( یعنی اون جایی که میرفتم کلاس این جوری یاد دادن ) ولی من از روش خوشم نمی آید حالا میخواهم اد بگیرم که چگونه به روشدستی یا کد نویسی توسط خودمان به بانک وصل شود ولی نمیدانم از جا شروع به یادگیری کنم :ناراحت: میخواستم ببینم که از شما کسی مقاله ای برای اتصال به SQL به روش کد نویسیمداره که کامل توضیح داده شده باشه !! :لبخندساده:
آخه این روش ویزارد میکروسافت داره من را گیریه میندازه و اصلاً به درد نمیخوره :عصبانی++::عصبانی::گریه:

abolfazl585
چهارشنبه 25 مهر 1386, 12:13 عصر
دوست عزیز تا میتونی از ویزارد دوری کن.
اولا اینکه ادمو تنبل بار میاره
ثانیا وقتی به یه مشکلی بر میخوریم دیباق کردنش سخته.
ثالثا فکر میکنیم که ویزارد روش راحتیه، به نظر من کد راحت تر از ویزار هست.
نیازی هم به مقاله نیست. خیلی ساده است.


System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("عبارت ارتباطی");
System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter("select * from table", conn);
System.Data.DataTable dt = newDataTable();
da.Fill(dt);

حالا به جای "عبارت ارتباطی" باید یک ConnectionString بسازی.
یک روش راحت اینه که وقتی با ویژوال استودیو به یک دیتا بیس از sqlServer کانکت شدی، میتونی از قسمت Server Explorer روی دیتا بیس کلیک کنی و از اون Properties بگیری و در قسمت Properties عبارت مقابل "Connection String" رو کپی کنی و به کد های خودت اضافه کنی.
میتونی هم یه کار دیگه بکنی:
دو روش داری:


System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("data source=(local);database=databasename;user id=sa;password=123");



System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("data source=(local);database=databasename;trusted_conne ction=yes");

اولی برای SqlServery هست که با sa و Password باید Login بشی و دومی واسه Asp.net User هستش
توضیح:
اگه روش دوم رو انتخاب کنی iis با استفاده از user ی به نام Asp.net به SqlServer وصل میشه البته این user حتما باید در دیتابیس خودت Add بشه.تو قسمت Security مربوط به SqlServer و قسمت users مربوط به DataBass.

merlin_vista
چهارشنبه 25 مهر 1386, 14:57 عصر
خوب حالا اگه خواستیم شرط بنویسیم تو دستور SELECT چه کار کنم !! و برای delete , insert هم توضیح بدین و نحوه ارسال پارامتر به پروسیجر ها را !

m.hamidreza
چهارشنبه 25 مهر 1386, 15:09 عصر
از SqlCommand استفاده کن . البته Query شو خودت باید بنویسی . توی msdn خوب توضیح داده ، ارسال پارامترها به sp ها هم سادست ... یه نگاه بنداز اگه مشکلی بود بگو .

hamedgh
چهارشنبه 25 مهر 1386, 15:11 عصر
می تو نی از کد زیر استفاده کنی
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("عبارت ارتباطی");
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("insert into first()valuse()", conn);
conn.Open();
cmd.ExecutenoneQuery();
conn.Close();


یا هر دستور دیگه که می خواهی میتوانی از این کد استفاده کنی
برای ارسال پارامتر به پراسیجر ها باید کد زیر هم استفاده کنی

cmd.Parameter.Add("@name",SqlType.Nvarchar,50).Value= "hamed";
برای فراخوانی پراسیجر در کامند "EXEC Sp_INSERT"
مشکلی دیگه ای داشتی خبر کن

merlin_vista
چهارشنبه 25 مهر 1386, 15:25 عصر
ببینم تو همان دستور که منویسیم واسه where میتونیم همان جا مقدار را بدیم مثلاً مقدار از یک txt میاد !

hamedgh
چهارشنبه 25 مهر 1386, 17:46 عصر
سلام
چرا که نشه مثلا می تونی کد زیر را بنویسی
"select * from test wehre id=' "txtID.Text+"' and name=' "+txtName.Text" '"

برای Insert و update هم فرقی نم کند مثل همین است هر دستور Tsql که می خواهی می توانی بنویسی
این SqlCommand مثل Query اس کیو ال می ماند هر چی باشه اجرا می کنه

hamedgh
چهارشنبه 25 مهر 1386, 18:07 عصر
دوستان جواب سوال ما را هم بدهید به خدا می روید بهشتhttp://barnamenevis.org/forum/showthread.php?t=82075

SalarSoft
چهارشنبه 25 مهر 1386, 18:46 عصر
اینجا فروم ASP.NET است نه آموزش SQL

برای این منظور کتابهای آموزش گام به گام ADO.NET رو مطالعه کنید.
http://www.developercenter.ir/forum/showthread.php?t=986

یا http://www.microsoft.com/mspress/books/4825.aspx

m.hamidreza
چهارشنبه 25 مهر 1386, 19:22 عصر
در select کردن به اینصورت :


"select * from test wehre id=' "txtID.Text+"' and name=' "+txtName.Text" '"


خطرات Sql Injection رو هم در نظر بگیرید ! بهتره تو یه sp باشه و textbox هارو بعنوان پارامتر بهش pass کنی ....

amir.net
چهارشنبه 25 مهر 1386, 19:40 عصر
خطرات Sql Injection رو هم در نظر بگیرید ! بهتره تو یه sp باشه و textbox هارو بعنوان پارامتر بهش pass کنی ....
میشه برای جلوگیری از sql injection بیشتر توضیح بدین (مگه توی asp هم ممکنه :متعجب:)

merlin_vista
چهارشنبه 25 مهر 1386, 19:50 عصر
Sql Injection چیه !!

hamedgh
چهارشنبه 25 مهر 1386, 20:44 عصر
البته من روش استفاده از پارامتر ها را در پست قبلی به ایشان گفتم
بله درسته خطر در کمین شماست اهسته برانید !!!
نمونه کدی برای هک کردن کدی که نوشته بودم
فرض کن کد برنامه یوزر نیم وپسورد چک می کند برای ورود اگر این کد را در تکست باکس اول بنویسد ییهو وارد برنامه می شود

"hamed ' or 1=1 --"شاید این خطر زیادی نداشته باشد ولی اگر بنویسد Drop Database یا restart .... دیگه می خواهی چکار کنی

m.hamidreza
چهارشنبه 25 مهر 1386, 20:52 عصر
یکی از روش هایی که هکر ها برای نفوذ به سایت شما می تونن ازش استفاده کنن SQL Injection هست که از طریق تزریق یه سری دستورات مربوط به خوندن ، درج،حذف و یا تغییر اطلاعات، جداول پایگاه داده ی شما رو مورد حمله قرار میدن !!! :افسرده:
طبیعتا میشه با استفاده از یه سری اقدامات سازنده! احتمال این حملات رو به حداقل رسوند . یکی از این اقدامات استفاده درست از storeprocedure ها و پارامتر های اوناست ...
-----
راجع به SQL Injection تو همین سایت جستجو کنی چیزای زیادی می یابی .:لبخندساده:

hamedgh
چهارشنبه 25 مهر 1386, 22:24 عصر
اون کدی من نوشتم خود Sql injection است خیال نکنی چیز پیچیده ای است ولی بسیار خطر ناک!!!
زیا دبهش فکر نکن از پارامتر ها استفاده کن بی خبال این حرفها