PDA

View Full Version : datareader , textbox



mehdiDER_5
شنبه 13 مهر 1387, 07:32 صبح
با سلام
من ميخواهم يك دستور select sum jam from table1 را جوابش را در textbox1.text بنويسم ميدانم كه بايد از datareader استفاده كنم اما كدش را نتوانستم به صورت درست طوري كه كار كند بنويسم فكر كنيد كه 4 تا فيلد ديگر هم ميخواهند جمع در textbox هاي ديگر بريزم در اينجا كدهاي زيادي بود ولي كار نكرد لطفاً يك كد در اين زمينه در اينجا بگذاريد
ممنون

__H2__
دوشنبه 15 مهر 1387, 01:46 صبح
سلام


Using _
dbCon As New System.Data.SqlClient.SqlConnection("CONNECTIONSTRING"), _
dbCom As New System.Data.SqlClient.SqlCommand("SELECT * FROM [tablename];", dbCon)

'dbCom.Parameters.Add...

dbCon.Open()

Using dbDr As System.Data.SqlClient.SqlDataReader = dbCom.ExecuteReader

If dbDr.Read Then

Dim str_int As String = dbDr.GetInt32(1).ToString
Dim str_dbl As String = dbDr.GetDouble(3).ToString
Dim str_str1 As String = TryCast(dbDr(4), String)
Dim str_str2 As String = TryCast(dbDr("stringfieldname"), String)
Dim str_obj As String = dbDr("anyfieldname").ToString

End If

End Using
End Using


برای یک فیلد واحد بهتر است از دستور ExecuteScalar استفاده کنید و برای یک سطر واحد فلاگ SingleRow را استفاده کنید.
به null بودن مقادیر هم دقت کنید...

mehdiDER_5
دوشنبه 15 مهر 1387, 07:12 صبح
با سلام و تشكر از شما دوست گرامي
من ميخواهم دو تا دستور select را از يك جدول به طور جداگانه با datareader بنويسم (در يك رويداد button )بعد از اين دستورات همين كدها را براي يك select ديگر هم نوشتم ولي كار نكرد اگر ميشود كمك كنيد

__H2__
سه شنبه 16 مهر 1387, 00:49 صبح
سلام
فرقی ندارد به چند SELECT نیاز دارید، دستور همان است.
ولی هر شی Command و Connection در هر لحظه فقط میتوانند به یک DataReader سرویس دهد.

یعنی یا باید DataReader جدید را بعد از EndUsing قبلی و یا بعد از Close قبلی اینجاد کنید و یا به تعداد مورد نیاز Command و Connection هم تولید کنید.

ولی معمولاً و به راحتی میتوانید دستورات SQL خود را به صورت ترتیبی و یکی بعد از Close دیگری اجرا کنید و کار را با یک Command و Connection انجام دهید.

mehdiDER_5
سه شنبه 16 مهر 1387, 08:22 صبح
ولی معمولاً و به راحتی میتوانید دستورات SQL خود را به صورت ترتیبی و یکی بعد از Close دیگری اجرا کنید و کار را با یک Command و Connection انجام دهید.
با سلام و تشكر
من قسمت اول صحبت تان را متوجه شدم ولي اين قسمت را نميدانم چطور انجام دهم اگر ميشود يك مثال با 2 تا select از يك جدول و با دو تا فيلتر مختلف بزنيد ممنون ميشوم

__H2__
سه شنبه 16 مهر 1387, 22:44 عصر
سلام


Using _
dbCon As New System.Data.SqlClient.SqlConnection("CONNECTIONSTRING"), _
dbCom As New System.Data.SqlClient.SqlCommand("SELECT * FROM [tablename_1];", dbCon)

'dbCom.Parameters.Add...

dbCon.Open()

Using dbDr As System.Data.SqlClient.SqlDataReader = dbCom.ExecuteReader

If dbDr.Read Then

Dim str_int As String = dbDr.GetInt32(1).ToString
Dim str_dbl As String = dbDr.GetDouble(3).ToString
Dim str_str1 As String = TryCast(dbDr(4), String)
Dim str_str2 As String = TryCast(dbDr("stringfieldname"), String)
Dim str_obj As String = dbDr("anyfieldname").ToString

End If

End Using

'--------------

dbCom.CommandText = "SELECT * FROM [tablename_2];"
'dbCom.Parameters.Clear...
'dbCom.Parameters.Add...

Using dbDr As System.Data.SqlClient.SqlDataReader = dbCom.ExecuteReader

If dbDr.Read Then

Dim str_int As String = dbDr.GetInt32(1).ToString
Dim str_dbl As String = dbDr.GetDouble(3).ToString
Dim str_str1 As String = TryCast(dbDr(4), String)
Dim str_str2 As String = TryCast(dbDr("stringfieldname"), String)
Dim str_obj As String = dbDr("anyfieldname").ToString

End If

End Using

End Using

================================================== ====================

Using _
dbCon As New System.Data.SqlClient.SqlConnection("CONNECTIONSTRING"), _
dbCom As New System.Data.SqlClient.SqlCommand("SELECT * FROM [tablename_1];", dbCon)

Dim dbDr As System.Data.SqlClient.SqlDataReader
Dim str_int As String
Dim str_dbl As String
Dim str_str1 As String
Dim str_str2 As String
Dim str_obj As String

'dbCom.Parameters.Add...

dbCon.Open()

dbDr = dbCom.ExecuteReader

If dbDr.Read Then

str_int = dbDr.GetInt32(1).ToString
str_dbl = dbDr.GetDouble(3).ToString
str_str1 = TryCast(dbDr(4), String)
str_str2 = TryCast(dbDr("stringfieldname"), String)
str_obj = dbDr("anyfieldname").ToString

End If

dbDr.Close()

'--------------

dbCom.CommandText = "SELECT * FROM [tablename_2];"
'dbCom.Parameters.Clear...
'dbCom.Parameters.Add...

dbDr = dbCom.ExecuteReader

If dbDr.Read Then

str_int = dbDr.GetInt32(1).ToString
str_dbl = dbDr.GetDouble(3).ToString
str_str1 = TryCast(dbDr(4), String)
str_str2 = TryCast(dbDr("stringfieldname"), String)
str_obj = dbDr("anyfieldname").ToString

End If

dbDr.Close()

End Using