PDA

View Full Version : سوال: کمک برای یافتن ایرادی در برنامه



Hess_r
شنبه 13 شهریور 1389, 22:32 عصر
با سلام

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



private void btnOzviat_Click(object sender, EventArgs e)
{
if (txtboxEmail.Text.Length > 8 && txtboxUser.Text.Length > 0 && txtboxPassword.Text.Length > 4)
{
string strUser = txtboxUser.Text;
string strPassword = txtboxPassword.Text;
string strEmail = txtboxEmail.Text;
OleDbConnection Cn = new OleDbConnection();
Cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Documents and Settings\\Hesam\\My Documents\\UsersDatabase.accdb";
OleDbCommand Cm = new OleDbCommand();
Cm.Connection = Cn;
Cm.CommandText = "insert into Table1(User,Password,Email)Values(@user,@password, @email)";
Cm.Parameters.Clear();
Cm.Parameters.AddWithValue("@user", strUser);
Cm.Parameters.AddWithValue("@password", strPassword);
Cm.Parameters.AddWithValue("@email", strEmail);
Cn.Open();
Cm.ExecuteNonQuery();
Cn.Close();
}
else
{
MessageBox.Show("Lotfan Tamame Fildha Ra Be Tore Kamel Por Konid" + "\n" + "Password Hatman Bayad Bish Az 4 Harf Bashad", "Error");
}
}


ایراد رو از این قسمت میگیره :



Cm.ExecuteNonQuery();


این هم ارورش :

Syntax error in INSERT INTO statement.

واقعا نمیدونم ایراد از کجاست ... همه چیز رو چندین بار چک کردم .

با تشکر

یا علی

ایمان مدائنی
شنبه 13 شهریور 1389, 22:40 عصر
کونری که اجرا میشه رو دربیار و داخل بانک اجرا کن اونجا بهت نشون میده کجاش ایراد داره

mahgolebaba
شنبه 13 شهریور 1389, 22:43 عصر
بین پرانتز قبل از values و خود کلمه یک فاصله بذار..اگه درست نشد بگو تا جواب بدم

میلاد قاضی پور
شنبه 13 شهریور 1389, 22:46 عصر
هنگام اینزرت کردن باید از executescalar استفاده بشود .

salehi.sajad
شنبه 13 شهریور 1389, 22:56 عصر
سلام
آقا منم همین مشکل را داخل برنامه ام دارم
لطف کنید بیشتر راهنمایی کنید.

mahgolebaba
شنبه 13 شهریور 1389, 23:29 عصر
کد رو اینطوری بنویسید باید جواب بگیرید:

cm.CommandText = "INSERT INTO Table1 " +
"(id, lname, fname) " +
"VALUES(@id, @lname, @fname)";

جواب داد یا نه خبر کنید...

Hess_r
شنبه 13 شهریور 1389, 23:33 عصر
با سلام

از تک تک راهنمایی ها ممنون اما هیچ کدوم جواب نداد

باز هم منتظرم

mahgolebaba
شنبه 13 شهریور 1389, 23:40 عصر
من قبلا توی برنامه نویسی با دلفی به این مشکل برخوردم هر کاری کردم جواب نداد ناچار از اول برنامه رو نوشتم..!!!!!!!!!!! به همین سادگی!!!!!!!

میلاد قاضی پور
شنبه 13 شهریور 1389, 23:43 عصر
به هر حال باید از executescalar() استفاده کنید .



Cm.ExecuteScalar();


ضمنا شما حروف اول فیلدهارو به دوشکل متفاوت نوشتید . اگر دیتابیستون رو تو حالت کیس سنسیتیو گذاشته باشید بین حروف بزرگ و کوچک تفاوت قائل میشه در اون صورت خطا پیش میاد .

Hess_r
شنبه 13 شهریور 1389, 23:53 عصر
به هر حال باید از executescalar() استفاده کنید .



Cm.ExecuteScalar();


ضمنا شما حروف اول فیلدهارو به دوشکل متفاوت نوشتید . اگر دیتابیستون رو تو حالت کیس سنسیتیو گذاشته باشید بین حروف بزرگ و کوچک تفاوت قائل میشه در اون صورت خطا پیش میاد .



با سلام

خیر executescalat هم جواب نداد .

من حروف اول فیلد ها رو هم همه جا بزرگ نوشتم ... جایی نیست کوچیک نوشته باشم ... اگه منظورتون placeholder ها هست که فک نمیکنم به اون مربوط بشه .

با تشکر از پاسختون

amir11205
شنبه 13 شهریور 1389, 23:58 عصر
سلام دوست عزیز
اینو استفاده کن شاید بهتر باشه


Cm.CommandText = "insert into Table1 (User, Password, Email) Values ('" + strUser + "','" + strPassword + "','" + strEmail + "');

mahgolebaba
یک شنبه 14 شهریور 1389, 00:17 صبح
از این کد هم استفاده کن..امیدوارم که مشکلت حل بشه..


cmd.CommandText = "insert into table1 ([Name],[Family],[Phone]) values (@Name,@Family,@Phone)";

Hess_r
یک شنبه 14 شهریور 1389, 00:33 صبح
از این کد هم استفاده کن..امیدوارم که مشکلت حل بشه..


cmd.CommandText = "insert into table1 ([Name],[Family],[Phone]) values (@Name,@Family,@Phone)";


بله همین بود

بعد 5 ساعت الافی به کمک یکی از دوستام به این کد رسیدم و دیدم کار کرد تا اومدم بزنم شما هم نوشته بودی

واقعا ممنونم

از همه دوستان هم تشکر میکنم

mahgolebaba
یک شنبه 14 شهریور 1389, 00:55 صبح
:تشویق: خب خدا رو شکر...امیدوارم مشکل همه برنامه نویسها حل بشه!!!!!!!!!!!....