PDA

View Full Version : مبتدی: مقدار فیلد autonumber بعد از add کردن آیتم جدید



arezoo_helpful
پنج شنبه 14 اردیبهشت 1391, 15:56 عصر
کمک(فوری)سلام دوباره به دوستان عزیز

من برای پروژه ام دارم یه فروشگاه آنلاین لپ تاپ درست میکنم. فیلد کلیدی جدول لپ تاپ ها autonumber هستش. میخوام وقتی لپ تاپ اضافه میکنم از مقدار autonumber هم مطلع بشم و بریزمش تو یه متغییر دوستان میشه کمک کنن؟؟
خــــــــــلی تو اینترنت گشتم ولی چیزی متوجه نشدم....:عصبانی++:

فقط فهمیدم که SELECT @@IDENTITY آخرین مقدار رو برمیگردونه ولی نمیدونم چطور ازش استفاده کنم
لطفا کمکم کنید..........


SqlConnection con = new SqlConnection();
con.ConnectionString = ConfigurationManager.ConnectionStrings["mycs"].ConnectionString;
con.Open();

SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandText = "insert into laptop(model,brand,bus,cpu_company,cpu_type,cpu_mo del,cpu_clock,cpu_cache_size,ram_type,ram_size,har d_type,hard_size,display_size,display_type,os,grap hic_brand,graphic_model,graphic_ram_size,graphic_r am_type,cd,battery,hdmi,wifi,weight,count,price,da te,pic)Values(@model,@brand,@bus,@cpu_company,@cpu _type,@cpu_model,@cpu_clock,@cpu_cache_size,@ram_t ype,@ram_size,@hard_type,@hard_size,@display_size, @display_type,@os,@graphic_brand,@graphic_model,@g raphic_ram_size,@graphic_ram_type,@cd,@battery,@hd mi,@wifi,@weight,@count,@price,@date,@pic); SELECT CAST(SCOPE_IDENTITY() AS INT";


com.Parameters.AddWithValue("model",txt_model .Text);
.
.
.
.
.
.
com.ExecuteNonQuery();
com.Dispose();
con.Close();
con.Dispose();

afg_javan
پنج شنبه 14 اردیبهشت 1391, 16:09 عصر
می تونی از کد زیر استفاده کنی
select MAX(id) from [laptop]

البته به اینصورت نمی تونی دقیقا آیدی مورد نظر رو دریافت کنی.
فرض کن روی پروژه شما چند نفر مشغول به اضافه کردن محصول باشه.:لبخند:
اونوقته که با مشکل روبرو میشی.

به نظر من بهتره اتونامبر :لبخند: رو از جدولت برداری و آیدی رو به صورت به علاوه 1 به جدول اینسرت کنی

* joodi *
جمعه 15 اردیبهشت 1391, 13:46 عصر
با سلام
با همون دستور
SELECT @@IDENTITY آخرین مقدار رو بریزید توی متغیر و برگردونید.


البته به اینصورت نمی تونی دقیقا آیدی مورد نظر رو دریافت کنی.
فرض کن روی پروژه شما چند نفر مشغول به اضافه کردن محصول باشه.
اونوقته که با مشکل روبرو میشی.

به نظرم میشه از Transaction استفاده کرد .

arezoo_helpful
جمعه 15 اردیبهشت 1391, 21:24 عصر
ممنون از راهنمایی تون . مشکل من همینجاست که بلد نیستم چطور مقدار SELECT @@IDENTITY رو بریزم تو یه متغییر .....

خواهشا با یه کد کوتاه یه مثال بزنید ....
خیلی بهش احتیاج دارم :گریه:

hamid_shrk
جمعه 15 اردیبهشت 1391, 21:30 عصر
بجای com.ExecuteNonQuery(); بنویس :


int id = com.ExecuteScalar();

fakhravari
جمعه 15 اردیبهشت 1391, 21:46 عصر
به این دقت کنید
ALTER PROCEDURE [dbo].[Cities_Insert]
(
@ID smallint OUTPUT,
@CityName nvarchar(100),
@ProvinceID tinyint
)
AS
INSERT INTO Cities (CityName, ProvinceID)
VALUES (@CityName, @ProvinceID)

SET @ID = @@IDENTITY

مقدار ID رکورد برمیگردونه
با کد داش حمید