ورود

View Full Version : Syntax error converting the nvarchar value '78-66' to a column of data type int



msoleiman
پنج شنبه 26 دی 1387, 11:35 صبح
با سلام به همه دوستان و برنامه نویسان حرفه ای
یک برنامه با #C نوشته ام که می بایستی کد ملی را در SQL2005ذخیره کند . فیلد متناظر با کدملی را Nvarchar معرفی کرده ام ولی برای بار اول کد ملی را ذخیره کرده و بار دوم با دادن پیغام اخطار اجازه ذخیره سازی نمی دهد . نمونه برنامه را با دلفی نوشتم مشکلی نداشت حال واقعا نمی دانم مشکل من کجاست آیا از #C است یا SQL ولی چون با دلفی مشکلی نداشتم حدس زدم در #C یک مشکلی دارم . خواهش می کنم به من کمک کنید . راستی در زیر پیغام خطایی که هنگام اجرای فرمان Insert نمایش می دهد را مینویسم .بار اول که به طور مثال کد ملی 78-66 است را وارد می کنم ذخیره کرده و بار دوم این پیغام را میدهد .
Syntax error converting the nvarchar value '78-66' to a column of data type int.


با تشکر از همه حرفه ای ها

odiseh
پنج شنبه 26 دی 1387, 12:26 عصر
سلام پیغام خطا کاملا گویاست. چون شما دارین یک مقدار با ماهیت کاراکتری رو به int تبدیل می کنید.(به دلیل وجود خط فاصله) از پارامتر SQLCommand استفاده می کنید؟ اگه بله، نوع اون پارامتر رو تبدیل به کاراکترها کنید.

msoleiman
پنج شنبه 26 دی 1387, 16:50 عصر
شما دوست عزیز درست می فرمائید ولی من یک String تعریف کرده ام و دستورات SQL را در آن نوشته ام حال چگونه می توانم این راهنمایی شما را در آن اعمال کنم . بلد نیستم . راهنمایی کنید .

بدرود
همیشه به آرزوهای بزرگ فکر کنید .

majid325
پنج شنبه 26 دی 1387, 22:24 عصر
كد sql رو بزار ، احتمالا كوتيشن رو فراموش كردي !

saeed-kh
جمعه 27 دی 1387, 01:17 صبح
سلام
درست منظورتون رو نفهمیدم اما :
من اینجور فهمیدم که کد ملی رو به صورت nvarchaqrتوی بانک ذخیره کردین و حالا میخواین بخونین و توی intذخیره کنین.
احتمالا اول کد ملی رو صفر قرار میدین.
خب وقتی به عدد تبدیل میشه دیگه صفر اول کد ملی که توی stringذخیره شده برداشته میشه.
و همونطور که دوست عزیزمون گفتن خط فاصله هم که داره و نمیتونه به عدد تبدیل کنه.
شما باید اول باید stringرو بخونی و خط فاصله رو برداری بعد به عدد تبدیلش کنید.

اگه منظورتون چیز دیگه ای هست واضحتر بگید.
و کد sql رو هم اینجا بزارید.

و یه خواهش:لطفا وقتی به یک خطا برخورد میکنید فورامشکل رو به زبان برنامه نویسی نسبت ندید.

slashslash2009
جمعه 27 دی 1387, 11:47 صبح
درسته که شماره ملی یک عدد ولی چون هیچ عمایات ریاضی روش انجام نمیشه بهتره اونو رشته در نظر بگیری و به جنس Char در Sql تغییرش بدی و با این کد عمل insert را انجام بدی :


"insert into table1(Id,cost)values('" + textBox1.Text + "'," + int.Parse(textBox2.Text) + ")"

id از جنس char هست , cost از جنس int