PDA

View Full Version : ( ':' ) مشکل با شرط خالی بودن جدول (SQL)_(++)



kkkaka
یک شنبه 07 آبان 1391, 09:07 صبح
سلام به همه
بنده میخواهم جدولمو چک کنم اگر رکوردی با شماره سند= X وجود نداشت برام بسازه .
چون بنده در حال گردش توی جدول هستم از این دو شرط استفاده کردم تا وقتی به این رکورد که وجود نداره رسید بقیه دستوراتو انجام بده ولی متاسفانه نمی دونم چرا درست عمل نمیکنه.

if (datareader.Read)
{
...
}

واین یکی

if(datareader.HasRows)
{
...
}

متاسفانه هر دو جوابش True هست با اینکه بنده مطمئنم DataReader هیچ مقداری نداره!!!

حسین شهریاری
یک شنبه 07 آبان 1391, 09:25 صبح
اگه کوئری را درست نوشته باشید و به ds یا dt نسبت داده باشید، میتونی اینطوری عمل کنی:

if(ds.tables[0].rows.count()>0)
یا

if(dt.rows.count()>0)

morteza271
یک شنبه 07 آبان 1391, 09:28 صبح
توصیه میکنم از استور پروسیجور ها استفاده کنید.
شما می تونید با یک استور پروسیجور چک کنید که اگه رکوردی مشابه وجود داشت اون رو آپدیت کنه وگرنه یه رکورد جدید ثبت کنه و کلا مزایای زیادی داره!
حتما با استور پروسیجور کار کردین درسته؟؟
اگه خواستین بگین تا یه نمونه از استور پروسیجور که این کار رو انجام میده رو واستون بذارم.

kkkaka
یک شنبه 07 آبان 1391, 20:46 عصر
مرتضی جان لطف میکنی اگر یک نمونه برای بنده قرار بدی متاسفانه بنده اصلآ با ر استور پروسیجور کار نکردم...
بازم از همه دوستان ممنونم

morteza271
یک شنبه 07 آبان 1391, 22:36 عصر
اینم یه نمونه از استور پروسیجور برای اینکار :

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE Pr_Ins_Up_Person
@Id int,
@Name nvarchar(50),
@Family nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;

IF(EXISTS(Select * From Person))
BEGIN
Update Person Set name=@Name, family = @Family Where id=@Id;
END
ELSE
BEGIN
Insert Into Person(name,family) Values(@Name,@Family);
END
END
GO

من جدولی با نام Person و ستون های id,name,family در نظر گرفتم.

kkkaka
دوشنبه 08 آبان 1391, 21:10 عصر
مرسی مرتضی جان
حالا چطور باید این استور پروسیجور رو توی برنامه صدا بزنم؟؟؟

morteza271
دوشنبه 08 آبان 1391, 22:32 عصر
خواهش میکنم کاکا!!!!!!!!!!!!

صدا زدنش فرقی با اجرای کوئری نداره!
فقط باید CommandType رو برابر با StoredProcedure قرار بدین.
اینم یه نمونه برای اجرای یه استور پروسیجور :
SqlConnection Con = new SqlConnection(ConnectionString);
SqlCommand Cmd = new SqlCommand("Procedure_Name", Con);
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Parameters.AddWithValue(@"Id", 1);
Con.Open();
Cmd.ExecuteNonQuery();
Con.Close();

موفق باشید