PDA

View Full Version : سوال: اطمینان از درج در دیتابیس!



vB.N3T
یک شنبه 19 آذر 1391, 00:35 صبح
زمانی که با دستور insert دیتا ها رو از فرم به دیتا بیس SQL میفرستیم و کد ها بدون خطا اجرا میشه !
از کجا باید اطمینان پیدا کنیم که دیتا در طرف sql بدون مشکل ثبت شدن !:چشمک:

mehrbani
یک شنبه 19 آذر 1391, 01:06 صبح
اگر عملیات شکست بخوره SQL Server یک استثنا تولید می کنه.وقتی بدون خطا اجرا می شه میشه مطمئن بود که تمام insert ها با موفقیت انجام شده.
( با چک کردن مقدار برگشتی Scaler هم می تونین مطمئن بشین )

user18
یک شنبه 19 آذر 1391, 01:25 صبح
با سلام وقتی شما با استفاده از executenonquery شی command دستور رو میفرستی به دیتابیس خروجی اون یه نوع اینتیجر هست که تعداد رکوردهایی که تحت تاثیر قرار میگیرن را شامل میشه شما باید چک کنی اگه مقدار برگشتی برابر یک بود اونوقت یعنی اینکه یه رکورد ذخیره شده و نتیجه میگیریم که اطلاعات با موفقیت ذخیره شده است سعی کنید این کارو انجام بدید اگه نشد من کد رو میزارم واستون

vB.N3T
یک شنبه 19 آذر 1391, 02:00 صبح
میشه مثال بدید

patrick5053
یک شنبه 19 آذر 1391, 07:29 صبح
شما وقتي توي دستورات اسكيوال command رو مقدار ميديد و executenonquery رو اجرا ميكنيد و خطايي هم از طرف اسكيوال نداريد، مطمئن باشيد دستوراتي كه در command نوشتيد داره درست عمل ميكنه.
بازم اگه اين كار براتون مهمه، ميتونيد با استفاده از دوستور count در اسكيوال، از تعداد ركوردهايي كه در جدولتون هست آمار بگيريد كه آيا با اجرا كردن دستور insert يك ركورد به تعداد ركوردها اضافه شده يا نه.

Felony
یک شنبه 19 آذر 1391, 08:20 صبح
کار درست این هست که کدهای مربوط به درج رکورد رو در سمت سرور در یک StoredProcedure بنویسید و پارامترهای مورد نظر رو به وسیله برنامه بهش پاس بدید ، در آخر هم تو همون SP میتونید هر بررسی که نیاز دارید انجام بدید و نتیجه رو به برنامه برگردونید .

vB.N3T
یک شنبه 19 آذر 1391, 17:41 عصر
ممنون از همه
نکته اینحاس پاسخ های شما همه در سطح بالا و برای مبتدی ها دشوار

asghar2008
یک شنبه 19 آذر 1391, 20:14 عصر
کار درست این هست که کدهای مربوط به درج رکورد رو در سمت سرور در یک StoredProcedure بنویسید و پارامترهای مورد نظر رو به وسیله برنامه بهش پاس بدید ، در آخر هم تو همون SP میتونید هر بررسی که نیاز دارید انجام بدید و نتیجه رو به برنامه برگردونید .

سلام

نحوه نوشته StoredProcedure چطوریه؟!!!

ممنون میشم یه نمونه مثال بهمراه توضیحات بگید.

nima.sh
یک شنبه 19 آذر 1391, 20:29 عصر
سلام به همه دوستان...
من هم یه همچین مشکلی دارم،به این صورت که کاربر اطلاعات سفارش(مثل شماره سفارش، نام مشتری،شماره میز و....) رو میگیره ذخیره میکنه تو یه جدول و اطلاعات سفارش رو(نام غذا،تعداد،شماره سفارش)ذخیره میکنه تو یه جدول دیگه،حالا من اینجا شک دارم که اگه به صورت همزمان چند تا PDA اطلاعات رو ثبت کنند مشکل پیش نمیاد....؟
یا امکان این هست که در صورت بروز مشکلی اطلاعات به طور ناقص ثبت بشن....؟
اگه راهنمایی کنید ممنون میشم....!!!!

ali_habibi1384
یک شنبه 19 آذر 1391, 20:39 عصر
وقتي با 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

بدون شرح

mehrbani
دوشنبه 20 آذر 1391, 02:15 صبح
برای اینکه همه مطمئن بشین همه رکوردها درج شدن می تونین از Transaction ها استفاده کنین

nima.sh
دوشنبه 20 آذر 1391, 05:00 صبح
برای اینکه همه مطمئن بشین همه رکوردها درج شدن می تونین از Transaction ها استفاده کنین
امکانش هست بیشتر توضیح بدید.....؟

ali_habibi1384
دوشنبه 20 آذر 1391, 07:48 صبح
امکانش هست بیشتر توضیح بدید.....؟
دستور Transaction براي حالتي استفاده ميشه كه شما چند بروز رساني يا آينزرت روي ديتابيس داشته باشي استفاده ميشه كه اگر چنانچه يكي از عملياتها با موفقيت انجام نشد ميتوني از ادامه كار صرفنظر كنيد. يك ترنزاكشن با دستور begin Tran شروع و با Commit يا Rolback ختم ميشه. دستورات داخل ترنزاكشن وقتي به Commit ميرسه كليه تغييراتي كه در بدنه ترنزاكشن رخ داده رو اعمال ميكنه به اين معني كه اگر در وسط كار مثلا اگر خطايي رخ داد حتي قطع برق و دستور به Commit نرسيده باشد هيچ تغييري در ديتا بيس ايجاد نميشود حتي اگر عمل اينزرت و آپديت در خطوط قبلي انجام شده باشد.
توضيحات بيشتر رو در باره Tran جستجو كنيد.