PDA

View Full Version : تبدیل کد جهت درک بهتر نحوه ایجاد Query در دات نت



if
شنبه 15 اردیبهشت 1386, 02:52 صبح
با سلام
با توجه به اینکه در تاپیکهای زیادی بحث استفاده از ADO.NET شده و روشهای متفاوتی از نحوه Connection ها با دیتابیس معرفی شده ولی بنده به علت تجربه خیلی کم نسبت به سایرین تقاضا دارم که یکی از دوستان چند خط کد زیر را که در دلفی 7 نوشته شده (شاید خیلی ناشیانه) به معادل آن در VB2005 تبدیل کنند.البته چند خط ابتدایی را لازم است جهت بررسی شما مینویسم.
-------------------------------------------------------------------
Delphi 7
-------------

s:='SELECT * FROM login_inf WHERE (tkh IS NULL) AND (skh IS NULL) ';
if (edit2.Text<>'') and (edit3.Text<>'') then
s:=s+'AND name = :param1 AND family = :param2' ;
if edit18.Text<>'' then
s:=s+' AND (shomare = '+edit18.Text+')' ;
query1.Close;
query1.SQL.Clear ;
query1.SQL.Add(s);
query1.Parameters.ParamByName('param1').Value := edit3.Text ;
query1.Parameters.ParamByName('param2').Value := edit2.Text ;
query1.Open
------------------------------------------------------------------
Visual Basic 2005
-----------------------

Imports System.Data
Imports System.Data.SqlClient
Dim con As SqlConnection = New SqlConnection("Data Source=WIN2000;Initial Catalog=sabt;User ID=sa")
Dim da As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM login_inf", con)
Dim ds As DataSet = New DataSet()
da.Fill(ds, "login_inf")

con.Open()
.
.
.

if
شنبه 15 اردیبهشت 1386, 10:40 صبح
فعلا که هیچ دوستی به سوالهای من جواب نداده یک سوال دیگه هم بکنم که انشاا... فرجی بشه.فرض کنید من یک باتون روی فرم دارم که caption آن "اتصال به دیتابیس" است.میخواهم بدانم که متد Open مربوط به sqlConnection هیچ مقداری را در جواب با توجه به شرایط بوجود آمده برنمیگرداند.یعنی چه جوری باید موفقیت آمیز بودن یا نبودن ارتباط را چک کرد؟

MohammadSoft
شنبه 15 اردیبهشت 1386, 12:30 عصر
سلام
همونطور که گفتید متد open هیچ مقداری رو برنمیگردونه...شما برای اینکه متوجه بشید که کانکشنتون باز شده یا نه از try ...catch استفاده کنید اگه کانکشن شما باز نشد exeption ایجاد میشه و بلوک catch اجرا میشه .

if
شنبه 15 اردیبهشت 1386, 22:52 عصر
میشه بیشتر توضیح بدید؟(حتی الامکان با کد)

Alireza_Salehi
یک شنبه 16 اردیبهشت 1386, 07:52 صبح
سلام
همونطور که گفتید متد open هیچ مقداری رو برنمیگردونه...شما برای اینکه متوجه بشید که کانکشنتون باز شده یا نه از try ...catch استفاده کنید اگه کانکشن شما باز نشد exeption ایجاد میشه و بلوک catch اجرا میشه .

ایجاد کردن Exeption کار صحیحی نیست ، از خاصیت State شی Connection استفاده کنید:


Connection1.Open()
If Connection1.State = Data.ConnectionState.Open Then
'Your code
End If


ConnectionState Enumeration (http://msdn2.microsoft.com/en-us/library/system.data.connectionstate(VS.80).aspx)