PDA

View Full Version : استفاده از پارامتر در دستور select



mohandesan
چهارشنبه 08 اسفند 1386, 11:17 صبح
من می خواهم در ستور select پارامتر استفاده کنم ولی جواب نمی داد ازکد زیر استفاده کردم به نظرتون مشکلش چیه


Dim da AsNew SqlDataAdapter("select subject,about from tb_create where username=@user ", con)

mp2009
چهارشنبه 08 اسفند 1386, 11:35 صبح
این دستور ظاهرا هیچ مشکلی نداره .
مگه شما باهاش مشکل دارید؟

choobin84
چهارشنبه 08 اسفند 1386, 12:00 عصر
کد خطا رو بگذارید

mohandesan
چهارشنبه 08 اسفند 1386, 13:59 عصر
این دستورا را می نویسم ولی پیغام میده که @user تعریف نشده


Dim p1 AsNew SqlParameter("@user", SqlDbType.Char, 25)
p1.Value = TextBox1.Text

و بعدش دستوری را که بالانوشتم را مینویسم

__H2__
چهارشنبه 08 اسفند 1386, 16:14 عصر
سلام
1- اگر احیاناً TextBox شما خالی باشد، شاید موجب خطا شود.
در این حالت باید خالی بودن را تشخیص داده و پارامتر را با System.DbNull.Value پر کنید یا سرچ نکنید و...

2- امیدوارم پارامتر را به مجموعه پارامترهای Command اضافه کرده باشید؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ (انشا ا...)

3- همانطور که دوستان هم گفتند، لطفاً متن کامل انگیلیسی خطا را بنویسید.
(کلاً عادت خوبی است که هر که به مشکلی بر میخورد حداقل حداقل متن خطا را هم بگذارد)

choobin84
چهارشنبه 08 اسفند 1386, 18:37 عصر
این دستورا را می نویسم ولی پیغام میده که @user تعریف نشده


Dim p1 AsNew SqlParameter("@user", SqlDbType.Char, 25)
p1.Value = TextBox1.Text
و بعدش دستوری را که بالانوشتم را مینویسم
خب راست میگه.
user رو به کی بایند کردید؟

mohandesan
پنج شنبه 09 اسفند 1386, 07:38 صبح
منظورتون از بایند کردن چیه؟
من از یک روش دیگه استفاده کردم بعد از اینکه اون روش جواب نداد ولی این هم یه مشکل داره
این کدش:


IfNot (IsPostBack) Then
Label4.Text = Context.User.Identity.Name
Dim s AsString = Label4.Text
Dim cmd AsNew SqlCommand
cmd.Connection = con
Dim reader1 As SqlDataReader
cmd.CommandText = "Select subject,about From tb_create" & _
" Where username=" & s
con.Open()
reader1 = cmd.ExecuteReader
reader1.Read()
TextBox1.Text = RTrim(reader1.GetString(0))
TextBox2.Text = RTrim(reader1.GetString(1))
con.Close()
EndIf

اینم پیغام خطا
Invalid column name 'محتویات متغیر s'.

ir_programmer
پنج شنبه 09 اسفند 1386, 08:42 صبح
نوع UserName چیه؟ اگه رشته است اینجور بنویس:

cmd.CommandText = "Select subject,about From tb_create" & _
" Where username='" & s+"'"

__H2__
شنبه 11 اسفند 1386, 10:50 صبح
سلام
عزیزجان از همون پارامتر استفاده کن ولی پارامتر را باید به Command اضافه کنیدریال ورگنه از کجا آن را پیدا کند
مثلاً


Dim fieldvalue As String
Dim iCount As Integer
'...
'fieldvalue = "...."
'...

Using _
dbCon As New System.Data.SqlClient.SqlConnection("CONNECTIONSTRING"), _
dbCom As New System.Data.SqlClient.SqlCommand("SELECT COUNT(*) FROM [tablename] WHERE ([fieldname]=@fieldvalue)", dbCon)

dbCom.Parameters.Add(New System.Data.SqlClient.SqlParameter("@fieldvalue", SqlDbType.NVarChar, 50, ParameterDirection.Input, False, 0, 0, Nothing, DataRowVersion.Default, fieldvalue))
'dbCom.Parameters.AddWithValue("@fieldvalue", fieldvalue)

dbCon.Open()
iCount = CInt(dbCom.ExecuteScalar)
End Using

Sub Zero
شنبه 11 اسفند 1386, 21:07 عصر
این دستورا را می نویسم ولی پیغام میده که @user تعریف نشده


Dim p1 AsNew SqlParameter("@user", SqlDbType.Char, 25)
p1.Value = TextBox1.Text

و بعدش دستوری را که بالانوشتم را مینویسم

ببینید شما در قسمت SelectCommand برای اینکه به برنامه بگید میخوایید از پارامتر استفاده کنید، باید از @ استفاده کنید. اما لازم نیست دیگه در قسمت مقدار دهی به پارامتر ازش استفاده کنید. برای همین پیغام میده که @User تعریف نشده .
دستورتون رو به این صورت اصلاح کنید:

s.Parameters.Add("User", SqlDbType.Int).Value = TextBox1.Text

----------------------------------------------------------------------------
اما روش که خودم استفاده میکنم فوق العاده آسونه . کافیه از متد String.Format استفاده کنید. مثال :

Dim da AsNew SqlDataAdapter(String.Format("select subject,about from tb_create where username={0} ",TextBox1.Text),
con)
با این متد هر تعداد پارامتر که بخواید میتویند اضافه کنید و از شر گذاشتن علامت & و نوشتن String های طولانی وپیچیده خلاص بشید .