PDA

View Full Version : ارور در database



alireza378
پنج شنبه 07 اردیبهشت 1391, 18:37 عصر
من برای یه برنامه میخوام که وقتی روی یه دکمه کلیک شد توی کلومن students اون مقدار textbox1 چاپ بشه
از این کد استفاده میکنم




OleDbConnection con = new OleDbConnection();

con.ConnectionString =

"provider=microsoft.jet.oledb.4.0; data source=taxi_tel.mdb";



OleDbCommand com = new OleDbCommand();

com.CommandText =

"insert into student(name) values ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + comboBox1.Text + "','" + comboBox2.Text + "','" + comboBox3.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox7.Text + "','" + textBox8.Text + "','" + textBox9.Text + "')";

con.Open();

com.Connection = con;

com.ExecuteNonQuery();

con.Close();

display();

ولی ارور میده
عکسش را پیوست کردم

Mahmoud.Afrad
پنج شنبه 07 اردیبهشت 1391, 19:03 عصر
خب شما میخواید به یک ستون مقذار بدید ، ولی چرا در قسمت values نه تا مقدار رو قرار دادید؟!

Mahmoud Zaad
پنج شنبه 07 اردیبهشت 1391, 19:09 عصر
علاوه بر مشکلی که دوستمون گفتند، بهتره از پارامتر استفاده کنید: مثلا کوئری رو به صورت زیر تغییر بدید


"INSERT INTO tbl(fname, lname)VALUES(@p1,@p2)"

و به این صورت مقدار دهی کنید:


com.Parameters.AddWithValue("@p1", txtFname.Text);
com.Parameters.AddWithValue("@p2", txtLname.Text);

در روشی که شما نوشتید ظاهرا یه ' (سینگل کوتیشن) هم توی تکست باکس وارد کردید که خطا میده.

alireza378
جمعه 08 اردیبهشت 1391, 09:18 صبح
خب شما میخواید به یک ستون مقذار بدید ، ولی چرا در قسمت values نه تا مقدار رو قرار دادید؟!




نه من این کد را از یه پروژه برداشتم که اینطوری بود
همونطور هم نوشتم
ولی توی مقادیر فقط نوشتم

textBox1.Text

alireza378
جمعه 08 اردیبهشت 1391, 09:47 صبح
علاوه بر مشکلی که دوستمون گفتند، بهتره از پارامتر استفاده کنید: مثلا کوئری رو به صورت زیر تغییر بدید


"INSERT INTO tbl(fname, lname)VALUES(@p1,@p2)"

و به این صورت مقدار دهی کنید:


com.Parameters.AddWithValue("@p1", txtFname.Text);
com.Parameters.AddWithValue("@p2", txtLname.Text);

در روشی که شما نوشتید ظاهرا یه ' (سینگل کوتیشن) هم توی تکست باکس وارد کردید که خطا میده.


من این کد را نوشتم




OleDbConnection con = new OleDbConnection();

con.ConnectionString =

"provider=microsoft.jet.oledb.4.0; data source=students.mdb";



OleDbCommand com = new OleDbCommand();

com.Parameters.AddWithValue(

"@p2", textBox1.Text);

con.Open();

com.Connection = con;

con.Close();

ولی وقتی میرم توی فایل اکسسم هیچ پارامتری نمیبینم
شما میشه کد این کار را برای من بنویسید!؟

Hossenbor
جمعه 08 اردیبهشت 1391, 09:57 صبح
میدونید مشکل شما کجاست اون فرما اجراییشو نگذاشتی که اینه COM.ExecuteNonQuery(); البته این بری مواردی استفاده میشه که برنامه درخواست اطلاعات نکنه

Mahmoud Zaad
جمعه 08 اردیبهشت 1391, 10:02 صبح
خب شما کوئری رو ننوشتی، این یه خط رو بعد از خط سومت بنویس:


com.CommandText = "insert into student(name) values (@p2)";

alireza378
جمعه 08 اردیبهشت 1391, 10:13 صبح
این p2@ را باید به جاش چیزی بنویسم!؟

Mahmoud Zaad
جمعه 08 اردیبهشت 1391, 10:24 صبح
این p2@ را باید به جاش چیزی بنویسم!؟

نه دیگه به اون میگن پارامتر که توی خط بعدی مقدار دهی میشه در کل کدت به شکل زیر میشه:


OleDbConnection con = new OleDbConnection();
con.ConnectionString = "provider=microsoft.jet.oledb.4.0; data source=students.mdb";
OleDbCommand com = new OleDbCommand();
com.CommandText = "insert into student(name) values (@p2)";
com.Parameters.AddWithValue("@p2", textBox1.Text);
con.Open();
com.Connection = con;
com.ExecuteNonQuery();
con.Close();

alireza378
جمعه 08 اردیبهشت 1391, 11:02 صبح
این دوباره ارور میده
86363

Mahmoud Zaad
جمعه 08 اردیبهشت 1391, 12:04 عصر
این دوباره ارور میده
86363

این کانکشن استرینگ برای اکسس 2003، فایل شما ورژنش بالاتره. باید کانکشن استرینگ رو تغییر بدید. برید توی server explorer یک کانکشن جدید add کنید یه پنجره جدید باز میشه اونجا فایل خودتون (همین بانک اطلاعاتی اکسس) رو انتخاب کنید بعد دکمه Test Connection رو بزنید اگه OK داد بعد روی دکمه Advanced کلیک کنید پایین پنجره باز شده ، کانکشن استرینگ وجود داره اون رو کپی کنید.

AliSaeedi_v
جمعه 08 اردیبهشت 1391, 13:13 عصر
سلام
به نظر من اشکال در کانکشن استرینگ هستش...

alireza378
یک شنبه 10 اردیبهشت 1391, 14:58 عصر
این دوباره ارور میده
86463
میشه یه کمکی بکنین!؟