PDA

View Full Version : OleDbCommand.ExecuteNonQuery()



hojjat_sekhavati
پنج شنبه 06 آذر 1382, 20:46 عصر
سلام

اگه پررویی نباشه یه نفر یه لطفی میکنه کد لازم برای insert /update/delete در یک بانک اکسس بدون استفاده از دیتا ست رو بگه.
الان از OleDbCommand.ExecuteNonQuery() استفاده میکنم خطا میده میگه:
No value given for one or more required parameters


تشکر

Farhad.B.S
پنج شنبه 06 آذر 1382, 21:30 عصر
Dim myCon As New OleDb.OleDbConnection()
Dim myCommand As New OleDb.OleDbCommand()
Dim mySQLCommand As String

myCon.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(".") & "\Database.mdb"

myCon.Open()
myCommand.Connection = myCon
myCommand.CommandType = CommandType.Text

mySQLCommand = "INSERT INTO Users (usernameA, passwordA) VALUES (@Username, @Password)"
myCommand.CommandText = mySQLCommand
myCommand.Parameters.Add("@Username", txtUser.Text)
myCommand.Parameters.Add("@Password", txtPwd.Text)

myCommand.ExecuteNonQuery()
myCon.Close()




احتمالا شما پارامتر هایی رو که در سیکول کامند استفاده کردید مقدار دهی نکردید یا اشکالی در سینتکس سیکول کامند شما وجود داره .
و دیگه اینکه اگه از یه command در چند جا استفاده میکنید ، حتما قبل از استفاده ، اون رو توسط
کد زیر تمیز :mrgreen: کنید :


dbCommand.Parameters.Clear()

در صورتی که مشکلتون حل نشد کد مورد نظر رو بنویسید.

hojjat_sekhavati
پنج شنبه 06 آذر 1382, 22:24 عصر
ممنون آقا فرهاد. بازهم کار نکرد. از لحاظ سینتکس و اینا صدبار چک کردم. وگرنه سوال نمی کردم

این کدیه که استفاده میکنم




Dim strDBPath As String = Server.MapPath("myDB.mdb")
Dim oleConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath)
Dim strSql = "INSERT INTO tblName (fName, lName) VALUES (txt_fName.Text, txt_lName.Text)"
Dim oleCmd As New OleDbCommand(strSql, oleConn)
oleConn.Open()
oleCmd.ExecuteNonQuery()
oleConn.Close()




همین کد البته با دستور select متفاوت، موقع فراخوانی متدهای ()ExecuteReader و ()ExecuteScalar کار میکنه.

میدونی بدیش اینه که کار به این سادگی با چند خط کد ساده هی به آدم خطا بده :x

Farhad.B.S
پنج شنبه 06 آذر 1382, 22:35 عصر
اشکال از همون سیکول کامنده :



"INSERT INTO tblName (fName, lName) VALUES (txt_fName.Text, txt_lName.Tex


شما اسم txt_fname.Text رو در پارامتر ها قرار دادید که سیکول انجین اون رو به عنوان یه کامند میخونه .

بابراین سیکول کامند رو به کد زیر تغییر بدید :


"INSERT INTO tblName (fName, lName) VALUES ('" & txt_fName.Text & "','" & txt_lName.Tex & "'"


یا اینکه میتونید از پارامتر های این شی استفاده کنید (در کد اول)

hojjat_sekhavati
جمعه 07 آذر 1382, 10:12 صبح
:خیلی متعجب:

عجب اشتباهی

...


آقا یه دنیا ضربدر دو ممنون.

hojjat_sekhavati
چهارشنبه 12 آذر 1382, 04:09 صبح
سلام


بازم مشکل پیش اومد

تو بخش مشخص کردن موقعیت پایگاه داده

وقتی از این استفاده میکنم


Dim strDBPath As String = Server.MapPath("../db/myDB.mdb")
Dim oleConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath)


میگه: Cannot use a leading .. to exit above the top directory


از دی اس ان هم که استفاده میکنم میگه: Could not find installable ISAM

دی اس انی که می نویسم:


Dim oleConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; DSN=dsnName;uid=654321;pwd=123456")


روی سیستم خودم اولی کاملا جواب میده. البته نسخه قدیمی فریم ورکه. همون اولا که اومده بود.
ساعت چهار صبحه



....


چه باید کرد.