PDA

View Full Version : ارور در دستورات



amin750
شنبه 20 آبان 1391, 15:57 عصر
سلام دوستان
من این کد رو واسه صفحه ثبت نام نوشتم ولی موقع اجرا ارور میگیره


SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=dbProject;Integrated Security=True");
SqlDataAdapter sda = new SqlDataAdapter("insert into tblUser(Username,Password,Email,Phone) values(@a,@b,@c,@d)", con);
sda.SelectCommand.Parameters.AddWithValue("@a", txtUsername.Text);
sda.SelectCommand.Parameters.AddWithValue("@b", txtPassword.Text);
sda.SelectCommand.Parameters.AddWithValue("@c", txtEmail.Text);
sda.SelectCommand.Parameters.AddWithValue("@d", txtPhone.Text);
sda.SelectCommand.CommandType = CommandType.Text;
DataSet ds = new DataSet();
sda.Fill(ds);


لطفا راهنمایی کنید
ارور:

94732

Fartaj
شنبه 20 آبان 1391, 17:36 عصر
سلام

من فکر می کنم این ارور به خاطر اینه که مقداری رو که برای ثبت داری می فرستی از مقداری که برای اون تو جدول در نظر گرفتی بیشتره مثلا فیلدی از جدول رو ( nvarchar (20) ) در نظر گرفتی و حالا مقداری که مفرستی از ظرفیت اون خارجه

Mag-Mag
شنبه 20 آبان 1391, 19:14 عصر
ببین همونطوری که دوستمون گفت
تو داری 4 تا فیلد تو دیتا بیس ذخیره میکنی
نام کاربری و پسورد و ایمیل و تلفن
و هر چهارتا رو هم داری به صورت string دریافت می کنی
و حالا اگر نوع فیلد های جدولت از نوع های string نباشند یا تعداد کاراکترهای یک فیلدت از اونی که براش تو دیتا بیس در نظر گرفتی بیشتر باشه این خطا رو میده

ضمنا (دوستانه از من بشنو)سعی کن روی کدهات یک سری فیلتر قرار بدی
انتخاب نوع های مناسب؛تغییر نوع ها،چک کردن خالی نبودن ها و چک کنی اگر واقعا SqlDataAdapter خالی نبود بعد عملیات بعدی رو انجام بدی و...

چون اینجور کنترل ها توی پروژه های کوچیک ممکن زیاد به چشم نیاد اما پروژت که بزرگ بشه اینا خیلی مهم میشن
خیلی

fakhravari
شنبه 20 آبان 1391, 19:26 عصر
شما دارید دستور insert انجام میدید این دیتاست چی؟؟؟؟

Mag-Mag
شنبه 20 آبان 1391, 19:35 عصر
شما دارید دستور insert انجام میدید این دیتاست چی؟؟؟؟
:متفکر:راست میگه؟

دقت نکردیم به اینش
کلا اشتباهه
اینطوری بنویس
اول یه تابع کلی برای insert بنویس که همه جا ازش استفاده کنی
مثل این

public static bool SqlQuery(string Command)
{
try
{
string ConnectionString = کانکشن استرینگت();
SqlConnection cn = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = Command;
cmd.Connection = cn;
if (cn.State != ConnectionState.Open)
cn.Open();
cmd.ExecuteNonQuery();
if (cn.State != ConnectionState.Closed)
cn.Close();
return true;
}
catch (Exception e)
{
return false;
}
}


بعد تو صفحت مثل این ازش استفاده کن

string SaveQuery = "insert into info (main) values ('" + General.ReplaceSpecialCharacter(Request["txtText"].ToString()) + "')";
if (Database.SqlQuery(SaveQuery))
{
"پیغام بده ذخیره شد"
}
else
{
"پیغام خطا بده"
}

بجای insert من insert خودتو بنویس
جای اون پیغام هام هر طور دوس داری به کاربر اون متن رو نشون بده

amin750
شنبه 20 آبان 1391, 20:20 عصر
میتونین یه کد مثل ماله خودم بنویسین (اصلاحش کنین)

amirjalili
شنبه 20 آبان 1391, 20:37 عصر
دوست گرامی آیا به تایپیک مرجع کامل خطا ها و باگ ها در بخش اعلانات مراجعه کرده اید؟ آیا میدانستید که مدت ها زحمت کشیده شده تا چنین سوالات تکراری پرسیده نشه؟ آیا می دانستید با کمی جستجو میتوانید به پربار شدن سایت با جلوگیری از ایجاد پست های تکراری کمک کنید؟

amin750
شنبه 20 آبان 1391, 20:54 عصر
کد درسته مشکل همون بود که دوستان گفتن مقدار فیلد از مقدار موجود در بانک بیشتر بود

Mag-Mag
یک شنبه 21 آبان 1391, 08:37 صبح
ییین عزیزم اون خطا که مال همون نوع فیلد های دیتا بیسته
اما دستور insert رو نباید اونطوری بنویسی

اوبالیت به بو
یک شنبه 21 آبان 1391, 11:15 صبح
با SQLDataAdapter هم می تونید Insert کنید

این دستور رو ست کنید: sda.InsertCommand