PDA

View Full Version : سوال: دلیل این خطا چیست؟ (Error converting data type nvarchar to int)



asrah6
چهارشنبه 17 مهر 1392, 00:22 صبح
سلام برشما دوستان گرامی
من از sp و Ado.net برای ارتباط با بانک اطلاعاتی استفاده می کنم استور پروسیجر را به صورت زیر نوشته ام :

ALTER proc [dbo].[AddStudent]
@FName nvarchar(50),
@LName nvarchar(50),
@FatherName nvarchar(50),
@BirthDay nvarchar(50),
@mobil int ,
@tell int ,
@NumSt int ,
@Pic varbinary(MAX),
@IDPaye int ,
@CLID int
as
insert into TblStudent (FName,LName,FatherName,BirthDay,mobil,tell,NumSt, Pic,IDPaye,CLID)
values (@FName,@LName,@FatherName,@BirthDay,@mobil,@tell, @NumSt,@Pic,@IDPaye,@CLID)
و کد سی شارپ اضافه کردن اطلاعات به بانک به صورت زیر است:

SqlCommand cmd = new SqlCommand("AddStudent", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CLID", CmbClass.SelectedValue);
cmd.Parameters.AddWithValue("@IdPaye", CmbPaye.SelectedValue);
cmd.Parameters.AddWithValue("@FName", TxtName.Text);
cmd.Parameters.AddWithValue("@LName", TxtFamily.Text);
cmd.Parameters.AddWithValue("@FatherName", TxtFatherName.Text);
cmd.Parameters.AddWithValue("@BirthDay", MaskTxtBirthDay.Text.Trim());
cmd.Parameters.AddWithValue("@tell", TxtTell.Text.Trim());
cmd.Parameters.AddWithValue("@mobil", Txtmobil.Text.Trim());
cmd.Parameters.AddWithValue("@NumSt", TxtNumStudent.Text.Trim());
cmd.Parameters.AddWithValue("@Pic", SqlDbType.VarBinary).Value = arrpic;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("اطلاعات دانش آموز مورد نظر با موفقیت ثبت شد");
عکس خطا را هم پیوست کرده ام
لطفا کمک کنید

hercool
چهارشنبه 17 مهر 1392, 00:28 صبح
خوب معنیش اینه که یکی از پارامتر هایی که داری به پروسیجرت می فرستی nvarchar هست و تو اون پارامتر رو و همچنین فیلد رو در جدولت int تعریف کردی
باید اون مقدار nvarchar رو پیدا کنی و کانورتش کنی

hercool
چهارشنبه 17 مهر 1392, 00:31 صبح
اینا به نظر میاد از تکست باکس گرفتی که اگر اینجور هست اینا nvarchar هستن و باید کانورت کنی


TxtTell.Text.Trim());
Txtmobil.Text.Trim());
و بقیشون

asrah6
چهارشنبه 17 مهر 1392, 00:52 صبح
با تشکر از پاسخ شما

Convert.ToInt32(TxtTell.Text.Trim()));
Convert.ToInt32(Txtmobil.Text.Trim()));
ولی ایراد زیر را می گیرد

majid_i68
چهارشنبه 17 مهر 1392, 01:57 صبح
با سلام

این پیام میگه که .. مقادیری که در تکست باکس وارد کردی و تبدیل به int32 کردی بزرگ تر از .. رنج int32 است..

asrah6
چهارشنبه 17 مهر 1392, 02:08 صبح
سلام من فیلد جدولم از نوعint است دراین نوع فیلد چند عدد را می توان ذخیره کرد؟
مثلا شماره موبایل را می توان ذخیره کرد یا نه؟

majid_i68
چهارشنبه 17 مهر 1392, 03:54 صبح
مفدار int 32 حداکثر 2.147.483.647 است .. مثلا شماره موبایل من 9.372.592.869 است ..خب نمشه ذخیره اش کرد...چون بیشتر است

به نظر من مقادیر شماره موبایل و تلفن رو توی بانکت از نوع varchar قرار بده.. بعد با فرم برنامه که قرار است شماره رو بگیره .. تنظیم کن که فقط عدد قبول کنه.. و حد اکثر طولش رو هم مشخص کن.. اینجوری بهتر است