PDA

View Full Version : ExecuteNoneQuery



solmaz_zm
یک شنبه 25 شهریور 1386, 22:41 عصر
دستوری برای حذف یک رکورد از دیتابیس نوشته ام ::



connection.conn.Open()
Dim Cmd17 As New SqlCommand("delete FROM consult WHERE follow_num like'" & search_num.Text & "'", connection.conn)
Cmd17.ExecuteNonQuery

connection.conn.Close()


یا




connection.conn.Open()

Try

Dim cm2 As New SqlCommand
cm2.Parameters.Add("@del_num", SqlDbType.VarChar, 100).Value = search_num.Text
cm2.CommandText = "DELETE from consult WHERE [follow_num] like @del_num "
cm2.ExecuteNonQuery()





Catch ex As Exception

MessageBox.Show(ex.Message)
End Try
connection.conn.Close()




هردو دستوری پیغام خطای ذیل را می دهد::




ExecuteNoneQuery:connection propert has not been initialized.




نمیدونم علت چیه؟
ممنون میشم که راهنمایی نمایید.

saeed_rezaei
یک شنبه 25 شهریور 1386, 22:53 عصر
سلام.
اگه هنگام پست مطلبتون کد ها رو توی # قرار بدید خوندنشون راحتتره.
من کدهای شما رو خوندم. یه نمونه کد حذف رو اینجا واست می زنم



cn.Open()
Dim cb AsNew SqlCommand(strremove, cn)
cb.ExecuteNonQuery()
cn.Close()

دراین مثالی که زدم دو خطا ممکنه پیش بیاید.
1- عدم توانایی باز کردن کانکشن. من منظور شما رو از کد


connection.conn.Open


نمی فهمم. به مثال من یه نگاهی بندازید. مثال من ساده تره. دلیلی که از این کد استفاده کردید چیه؟ فکر می کنم اینجا رو (تعریف کانکشن رو)مشکل داشته باشید.
2- اگه دستور sqlحذف رو اشتباه بنویسید و در مثال من قرار بدید خطایی می ده که نمی تونه command رو اجرا کنه.
شما مورد اول رو بیشتر بررسی کنید.

solmaz_zm
یک شنبه 25 شهریور 1386, 22:58 عصر
ممنون.منظور من از کد

connection.conn.Open
همون کد :


cn.Open()

شماست.
در مثال شما منظورتون از strremove چیه؟؟اگه همون دستور sql هست که باز هم پیغام خطا میده!!

saeed_rezaei
یک شنبه 25 شهریور 1386, 23:01 عصر
سلام
منظور من از strremove رشته ای هست که شما به عنوان رشته حذف تعریف کردید.
می تونم بپرسم
connection.conn.Open
چطوری تعریف شده.

solmaz_zm
یک شنبه 25 شهریور 1386, 23:06 عصر
connection در حقیقت کلاسی هست که من دستور ارتباط با دیتابیس رو داخل اون نوشتم و conn متغیری از اون جنس هست.
(در حقیقت از ابتدا به این مدل نوشتن عادت کردم.روشهای دیگه هم هستن.)

ممنون می شم کسی علت پیغام خطای من رو بیان کنه.!!

saeed_rezaei
یک شنبه 25 شهریور 1386, 23:08 عصر
رشته اس کیو ال رو یه بار جداگونه بررسی کن ببین مشکلی نداره؟
هر چند که هنوز هم به connection مشکوک هستم.

solmaz_zm
یک شنبه 25 شهریور 1386, 23:20 عصر
connection هیچ مشکلی نداره،اگه داشت واسه insert & update هم می بایست دچار مشکل می شدم.
دستور حذف رو هم در محیط sql اجرا کردم مشکلی نبود!!!

میدونم این پیغام کمی عجیبه!!

saeed_rezaei
یک شنبه 25 شهریور 1386, 23:24 عصر
خوب ببین. می دونم که به کارت ایمان داری. اما بیا و یه کاریش کن.


Dim cn AsNew SqlConnection
cn.connectionstring=connection.conn.sonectionstrin g



حالا با cn بررسی کن.

odiseh
دوشنبه 26 شهریور 1386, 09:06 صبح
Solmaz_zm
به نظر من کوئری مربوط به Delete اشکال داره.......مثلا شما که از Like استفاده کردی چرا % رو نذاشتی؟ یه بار اون کوئری رو توی QA چک کن ببین اصلا Delete میکنه بعد ببرش توی برنامه ات.
موفق باشی

solmaz_zm
دوشنبه 26 شهریور 1386, 10:12 صبح
query هیچ مشکلی نداره،داخل محیط sql چک کردم درست کار می کنه،
آقای رضایی،دستوری رو که گفتین مربوط به cn استفاده کردم،این بار اجرا نمیشد (مثل قبل)اما پیغام خطایی نمیده!!(خروجی ندارد)!

solmaz_zm
دوشنبه 26 شهریور 1386, 13:28 عصر
ممنون از همه دوستان،مشکل برنامه رفع شد.

spanishtrain
سه شنبه 27 شهریور 1386, 09:27 صبح
سلام
احتمالا شما کانکشنتو بد جایی تعریف کردی یعنی برای قسمت insert یا جا دیگه
شما conection رو داخل public class form تعریف کن در قسمتی از برنامه که می خوای استفاده کنی new کن بعد open کن بعد بقیه کارا


# Public class form1
dim cnn as Sqlconnection
.
.
.

PrivateSub BtnDellet_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles BtnAdd.Click
cnn=New Sql connection
cnn.open

Dim cmdDell AsNew SqlCommand
cmdDell.connection=cnn
cmdDell.commandtext=SQlstr
#


اگه این کارو کردی جواب نداد تعریف پارامترت مشکل داره


cmdDell.Parameters.Add(New SqlParameter("@Param1", Value#
(
#