عدم تغییر دیتابیس پروژه بعد از اعمال تغییر در برنامه
سلام.
ابتدا از ابتدایی بودن سوال معذرت میخوام.
دوم اینکه خواهشا نگید بگرد پیدا میکنی!!
سوم: پیشاپیش ممنون از وقتتون که میگذارید.
حالا سوالم:
یه دیتابیس اکسس دارم که با oledb بهش وصل شدم و داده هاشو توی یک datagridview نشون میدم.
یه دکمه دارم که با زدن داده به dataadapter اضافه میکنه و توی datagridview نشون میده. ولی این تغییر توی دیتابیس اعمال نمیشه.
چیکار کنم؟
یه همچین کوئری میخوام اجرا بشه: OleDbConnection aaa = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0 ;Data Source=|DataDirectory|\\Office_Assistant.accdb");
aaa.Open();
string query = "INSERT INTO engineers(Engineer_File_NO, Engineer_Base,Engineer_Field,Engineer_Name,Enginee r_Family,Engineer_Phone, Engineer_BankAccount) VALUES(5,5,\"aa\",\"qqqq\",\"qqqq\",9,9)";
OleDbCommand command = new OleDbCommand();
command.CommandText = query;
command.Connection = aaa;
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = command;
DataTable objDataTable = new DataTable();
adapter.Fill(objDataTable);
aaa.Close();
با تشکر
نقل قول: database __ datagridview
با سلام
مگر برای ثبت در دیتابیس نباید از قطعه کد زیر استفاده کنید:
command.ExecuteNonQuery();
نقل قول: database __ datagridview
شما می خواین ورود اطلاعات به دیتابیس رو با adapter.Fill(objDataTable);
انجام بدید؟؟؟ اینکه اشتباهه
aaa.Open();
string query = "INSERT INTO engineers(Engineer_File_NO, Engineer_Base,Engineer_Field,Engineer_Name,Enginee r_Family,Engineer_Phone, Engineer_BankAccount) VALUES(5,5,\"aa\",\"qqqq\",\"qqqq\",9,9)";
OleDbCommand command = new OleDbCommand();
command.CommandText = query;
command.Connection = aaa;
command.ExecuteNonQuery();
aaa.Close();
نقل قول: database __ datagridview
سلام.
ممنون از پاسختون. ولی همچنان مشکل پا برجاست. تغییری که انجام میدم توی گریدویو نشون داده میشه ولی روی دیتابیس اعمال نمیشه!!!
adapter.Fill(objDataTable);
دقیقا کار این کد چیه؟
نقل قول: database __ datagridview
اون کد باعث میشه اطلاعات از datapter در جدولی به نام objdadtatable پر شود.
کد زیر رو قرار بده و نتیجه رو بگو :
int Engineer_File_NO = 5;
int Engineer_Base = 5;
string Engineer_Field = "\"aa\"";
string Engineer_Name = "\"qqqq\"";
string Engineer_Family = "\"qqqqq\"";
int Engineer_Phone=9;
int Engineer_BankAccount = 9;
string sql = "INSERT INTO engineers(Engineer_File_NO, Engineer_Base,Engineer_Field,Engineer_Name,Enginee r_Family,Engineer_Phone, Engineer_BankAccount)" +
" values ({0},{1},'{2}','{3}','{4}',{5},{6})";
sql = string.Format(sql,
Engineer_File_NO, Engineer_Base, Engineer_Field, Engineer_Name, Engineer_Family, Engineer_Phone, Engineer_BankAccount);
com.CommandText = sql;
con.Open();
com.ExecuteNonQuery();
con.Close();
نقل قول: database __ datagridview
خطایی با مضمون زیر میده:ExecuteNonQuery: Connection property has not been initialized.
در مورد کدی که گذاشتید: جایی که دارید کوئری مینویسید بعد از values مفهوم {0} و .. چیه؟
خیلی ممنون
نقل قول: database __ datagridview
کانکشنتون تنظیم نشده
command.Connection = aaa;
این خط رو اضافه کن....
{0} و {1} و ... برای خوانایی بیشتره... فرمت بندی اسسترینگ...
string sql = "INSERT INTO engineers(Engineer_File_NO, Engineer_Base,Engineer_Field,Engineer_Name,Enginee r_Family,Engineer_Phone, Engineer_BankAccount)" +
" values ({0},{1},'{2}','{3}','{4}',{5},{6})";
sql = string.Format(sql,
Engineer_File_NO, Engineer_Base, Engineer_Field, Engineer_Name, Engineer_Family, Engineer_Phone, Engineer_BankAccount);
این دو تا خط در کل اینکار رو می کنه برات .... مقدار Engineer_File_NO رو میزاره جای {0} و .....
نقل قول: database __ datagridview
ازتون خیلی ممنونم، ولی هنوز مشکل پابرجاست. داده اضافه شده توی گریدویو نشون داده میشه ولی وقتی برنامه بسته میشه و دوباره باز میشه نیستش!!
اصن توی دیتابیس اعمال نمیشه :گریه::اشتباه:
نقل قول: database __ datagridview
کل کدهایی رو که بعد از اصلاح برای ثبت اجرا میکنین رو اینجابذارین و همچنین تصویری از دیتابیس و جدولتون رو هم قرار بدین.
1 ضمیمه
نقل قول: database __ datagridview
کل کدی که اجرا میشه بعد از زدن یک دکمه است:
OleDbConnection aaa = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0 ;Data Source=|DataDirectory|\\Office_Assistant.accdb");
OleDbCommand command = new OleDbCommand();
command.Connection = aaa;
int Engineer_File_NO = 5;
int Engineer_Base = 5;
string Engineer_Field = "aa";
string Engineer_Name = "qqqq";
string Engineer_Family = "qqqqq";
int Engineer_Phone = 9;
int Engineer_BankAccount = 9;
string sql = "INSERT INTO engineers(Engineer_File_NO, Engineer_Base,Engineer_Field,Engineer_Name,Enginee r_Family,Engineer_Phone, Engineer_BankAccount)" +
" values ({0},{1},'{2}','{3}','{4}',{5},{6})";
sql = string.Format(sql,
Engineer_File_NO, Engineer_Base, Engineer_Field, Engineer_Name, Engineer_Family, Engineer_Phone, Engineer_BankAccount);
command.CommandText = sql;
aaa.Open();
command.ExecuteNonQuery();
aaa.Close();
این تغییرات بعد از یک بار زدن دکمه ی دیگه توی گریدویو نشون داده میشن. ولی روی دیتا بیس اعمال نمیشن.
کد کلید دوم:
OleDbConnection aaa = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0 ;Data Source=|DataDirectory|\\Office_Assistant.accdb");
aaa.Open();
string query = "select * from Engineers";
OleDbCommand command = new OleDbCommand();
command.CommandText = query;
command.Connection = aaa;
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = command;
DataTable objDataTable = new DataTable();
adapter.Fill(objDataTable);
aaa.Close();
dataGridView1.DataSource = objDataTable;
اینم عکس دیتابیس:
ضمیمه 133637
نقل قول: database __ datagridview
یعنی شما فقط این کد رو اجرا میکنی چیزی در دیتابیس ذخیره نمیشه؟ و خطایی هم نشون نمیده؟
OleDbConnection aaa = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0 ;Data Source=|DataDirectory|\\Office_Assistant.accdb");
OleDbCommand command = new OleDbCommand();
command.Connection = aaa;
int Engineer_File_NO = 5;
int Engineer_Base = 5;
string Engineer_Field = "aa";
string Engineer_Name = "qqqq";
string Engineer_Family = "qqqqq";
int Engineer_Phone = 9;
int Engineer_BankAccount = 9;
string sql = "INSERT INTO engineers(Engineer_File_NO, Engineer_Base,Engineer_Field,Engineer_Name,Enginee r_Family,Engineer_Phone, Engineer_BankAccount)" +
" values ({0},{1},'{2}','{3}','{4}',{5},{6})";
sql = string.Format(sql,
Engineer_File_NO, Engineer_Base, Engineer_Field, Engineer_Name, Engineer_Family, Engineer_Phone, Engineer_BankAccount);
command.CommandText = sql;
aaa.Open();
command.ExecuteNonQuery();
aaa.Close();
در ضمن تصویر تعریف جدول را بذارین نه دیتای جدول. اون قسمتی که جدول رو تعریف میکنین و نوع ستونها رو مشخص میکنین.
1 ضمیمه
نقل قول: database __ datagridview
دقیقا عین کدی که اجرا میکنم را گذاشتم. هیچ کار دیگه ای هم نمیکنم. ولی دیتابیس تغییر نمیکنه!!!!!!!!!!
واقعا گیج شدم. از شما هم بسیار متشکرم که دارید وقت میگذارید
اینم عکس دیتابیس:
ضمیمه 133641
نقل قول: database __ datagridview
فهمیدم مشکل چی بود.
مشکل از کانکشن استرینگ بود. دیتابیس یه جای دیگه بود ولی وقتی برنامه اجرا میشد یه کپی ازش میساخت و تغییرات رو اون اعمال میشد. وقتی هم برنامه دوباره اجرا میشد دوباره کپی ساخته میشد، که تغییراتی توش اعمال نشده بود.
برای رفعش یه مسیر فیکس دادم برای دیتابیس. اگه راه دیگه میدونید یا راهی برای حل اون مشکل اول خوشحال میشم و قدر دان خواهم بود
بازم بسیار ممنون از کمکتون دوستان.