زمانی که با دستور insert دیتا ها رو از فرم به دیتا بیس SQL میفرستیم و کد ها بدون خطا اجرا میشه !
از کجا باید اطمینان پیدا کنیم که دیتا در طرف sql بدون مشکل ثبت شدن !
زمانی که با دستور insert دیتا ها رو از فرم به دیتا بیس SQL میفرستیم و کد ها بدون خطا اجرا میشه !
از کجا باید اطمینان پیدا کنیم که دیتا در طرف sql بدون مشکل ثبت شدن !
اگر عملیات شکست بخوره SQL Server یک استثنا تولید می کنه.وقتی بدون خطا اجرا می شه میشه مطمئن بود که تمام insert ها با موفقیت انجام شده.
( با چک کردن مقدار برگشتی Scaler هم می تونین مطمئن بشین )
با سلام وقتی شما با استفاده از executenonquery شی command دستور رو میفرستی به دیتابیس خروجی اون یه نوع اینتیجر هست که تعداد رکوردهایی که تحت تاثیر قرار میگیرن را شامل میشه شما باید چک کنی اگه مقدار برگشتی برابر یک بود اونوقت یعنی اینکه یه رکورد ذخیره شده و نتیجه میگیریم که اطلاعات با موفقیت ذخیره شده است سعی کنید این کارو انجام بدید اگه نشد من کد رو میزارم واستون
میشه مثال بدید
شما وقتي توي دستورات اسكيوال command رو مقدار ميديد و executenonquery رو اجرا ميكنيد و خطايي هم از طرف اسكيوال نداريد، مطمئن باشيد دستوراتي كه در command نوشتيد داره درست عمل ميكنه.
بازم اگه اين كار براتون مهمه، ميتونيد با استفاده از دوستور count در اسكيوال، از تعداد ركوردهايي كه در جدولتون هست آمار بگيريد كه آيا با اجرا كردن دستور insert يك ركورد به تعداد ركوردها اضافه شده يا نه.
کار درست این هست که کدهای مربوط به درج رکورد رو در سمت سرور در یک StoredProcedure بنویسید و پارامترهای مورد نظر رو به وسیله برنامه بهش پاس بدید ، در آخر هم تو همون SP میتونید هر بررسی که نیاز دارید انجام بدید و نتیجه رو به برنامه برگردونید .
ممنون از همه
نکته اینحاس پاسخ های شما همه در سطح بالا و برای مبتدی ها دشوار
سلام به همه دوستان...
من هم یه همچین مشکلی دارم،به این صورت که کاربر اطلاعات سفارش(مثل شماره سفارش، نام مشتری،شماره میز و....) رو میگیره ذخیره میکنه تو یه جدول و اطلاعات سفارش رو(نام غذا،تعداد،شماره سفارش)ذخیره میکنه تو یه جدول دیگه،حالا من اینجا شک دارم که اگه به صورت همزمان چند تا PDA اطلاعات رو ثبت کنند مشکل پیش نمیاد....؟
یا امکان این هست که در صورت بروز مشکلی اطلاعات به طور ناقص ثبت بشن....؟
اگه راهنمایی کنید ممنون میشم....!!!!
وقتي با sqlCommand از متد ExecuteNoneQuery استفاده ميكني تعداد سطرهاي تحت تاثير اون SP رو برميگردونه.
نمونه SP براي Insert:
ALTER Procedure [dbo].[tblCard_Insert]
@CardNo int,
@CardSerial nvarchar(50),
@Valid nvarchar(50),
@Details nvarchar(255) = NULL
As
Begin
Insert Into tblCard
([CardNo],[CardSerial],[Valid],[Details])
Values
(@CardNo,@CardSerial,@Valid,@Details)
Declare @ReferenceID int
Select @ReferenceID = @@IDENTITY
Return @ReferenceID
End
بدون شرح
برای اینکه همه مطمئن بشین همه رکوردها درج شدن می تونین از Transaction ها استفاده کنین
دستور Transaction براي حالتي استفاده ميشه كه شما چند بروز رساني يا آينزرت روي ديتابيس داشته باشي استفاده ميشه كه اگر چنانچه يكي از عملياتها با موفقيت انجام نشد ميتوني از ادامه كار صرفنظر كنيد. يك ترنزاكشن با دستور begin Tran شروع و با Commit يا Rolback ختم ميشه. دستورات داخل ترنزاكشن وقتي به Commit ميرسه كليه تغييراتي كه در بدنه ترنزاكشن رخ داده رو اعمال ميكنه به اين معني كه اگر در وسط كار مثلا اگر خطايي رخ داد حتي قطع برق و دستور به Commit نرسيده باشد هيچ تغييري در ديتا بيس ايجاد نميشود حتي اگر عمل اينزرت و آپديت در خطوط قبلي انجام شده باشد.
توضيحات بيشتر رو در باره Tran جستجو كنيد.