PDA

View Full Version : سوال: نحوه ذخیره ساری اطلاعات از TextBox به Access DB ?



SharpSabre
سه شنبه 21 شهریور 1391, 23:00 عصر
سلام
می خواستم متن چند TextBox رو داخل DB ذخیره کنم توسط یک Button ، مثل ثبت نام ..

ممنونم .

ehsan7007
سه شنبه 21 شهریور 1391, 23:12 عصر
می تونی متنشون رو تو یه richtextBox نشون بده ، و بعد متن richtextBox رو در دیتابیس ذخیره کنی.

موفق باشی.

SharpSabre
سه شنبه 21 شهریور 1391, 23:19 عصر
می تونی متنشون رو تو یه richtextBox نشون بده ، و بعد متن richtextBox رو در دیتابیس ذخیره کنی.

موفق باشی.
اون متن ها اطلاعات چند فیلد در DB هستن ، فرقی می کنه تو TextBox باشه یا RichTextBox ?

SharpSabre
سه شنبه 21 شهریور 1391, 23:22 عصر
من قبلا در برنامه ی دیگه ای اطلاعات رو از طریق DataGridView داخل DB دخیره کردم ولی نمی دونم مشکل این دستور چیه !
this.user_InfoTableAdapter.Update(this.databaseDat aSet.User_Info);

SharpSabre
چهارشنبه 22 شهریور 1391, 04:56 صبح
توضیح دیگه اینکه : می خوام هر بار روی Button که Click می کنم متن textBox توی DataBase رکورد جدید بگیره !! حالا هم دیتابیس هم دیتاگرید ..

ممنون می شم با مثال راهنماییم کنید .

SharpSabre
چهارشنبه 22 شهریور 1391, 05:13 صبح
بنظرم این مثال کار کنه نه :

//You should already have a dataset binded with data grid, right? Let say that your //dataset's name is 'ds':
DataSet ds = new DataSet();
ds.Tables.Add("MyTable");
//create row and fill it:
DataRow rw = new DataRow();
rw["MyColumn1"] = textBox1.Text;
rw["MyColumn2"] = textBox2.Text;
rw["MyColumn3"] = textBox3.Text;
rw["MyCol........
//add the row:
ds.Tables["MyTable"].Rows.Add(rw);

roolinjax
چهارشنبه 22 شهریور 1391, 09:53 صبح
با سلام
چرا از اسکریپت های خود اس کیو ال استفاده نمی کنی ؟
روی اکسس هم جواب میده دیگه :
Insert into Table(field1,field2)values ('name','family')
استفاده از این روش که خیلی ساده تره

ehsan7007
چهارشنبه 22 شهریور 1391, 10:53 صبح
اموزش مبتدی و اسان (http://aftab.cc/tutorial/517-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1%DB%8C-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D8%B1-Visual-C)

ببخشید که من اول منظورت رو اشتباه فهمیدم.
حتتما مشکلت حل میشه.
موفق باشی دوست من!

SharpSabre
چهارشنبه 22 شهریور 1391, 14:53 عصر
با سلام
چرا از اسکریپت های خود اس کیو ال استفاده نمی کنی ؟
روی اکسس هم جواب میده دیگه :
Insert into Table(field1,field2)values ('name','family')
استفاده از این روش که خیلی ساده تره

اموزش مبتدی و اسان (http://aftab.cc/tutorial/517-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1%DB%8C-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D8%B1-Visual-C)

ببخشید که من اول منظورت رو اشتباه فهمیدم.
حتتما مشکلت حل میشه.
موفق باشی دوست من!
دوستان خیلی خیلی ممنونم ؛
کاش از طریق DataBoundingSource و DataSet هم می تونستید راهنماییم کنید عالی می شد.

ehsan7007
چهارشنبه 22 شهریور 1391, 15:01 عصر
من که فکر نمی کنم با sql متفاوت باشه ، فقط باید sql رو oledb کنی.
نمونه های اس کیو ال تو سایت زیاده.

مگه لینکی که دادم به درد نخورد؟

roolinjax
چهارشنبه 22 شهریور 1391, 15:04 عصر
برای ثبت اطلاعات نیازی به دیتاست نیست دوست عزیز.
روش دیگه ای هم که گفتی من راجع بهش چیزی نمی دونم
اما شما با یه شی OleDBCommand می تونین به سادگی عمل ثبت رو انجام بدین .
نمونه کد :
OleDbCommand cmd=new OleDBCommand();
cmd.CommandText = "insert into table1(name,family) vlues('"+text1.text+"','"+text2.text+"')";
cmd.ExecueNonQuery();
البته دیگه کانکشن استرینگ رو ننوشتم و فرض کردم که ارتباط وصله
البته باید قبل از انجام عمل درج خصوصیت Connection مربوط به شی cmd رو با کانکشن مورد نظر برابر کنید.
اگر سوالی بود بپرسید.

SharpSabre
چهارشنبه 22 شهریور 1391, 15:13 عصر
من که فکر نمی کنم با sql متفاوت باشه ، فقط باید sql رو oledb کنی.
نمونه های اس کیو ال تو سایت زیاده.

مگه لینکی که دادم به درد نخورد؟
من تو برنامه از DataSet و TableAdapter استفاده می کنم ؛
با این مثال ها اینطوری باید 60 ، 70 تا فیلد رو دستی بنویسم .

البته من به چند تا مشکل هم بر خوردم و اونا :


DataSync موقع اضافه کردن دیتابیس به برنامه .
Multi-Valued هنگام Adapter کردن .
ISAM هنگام استفاده از ConnectionStirng .

که فکر کنم یک ویندوز جدید نیاز باشه ، چون همه اینا مربوط هست به Connection دیتابیس و Sync شدن اون با VS.net .

ehsan7007
چهارشنبه 22 شهریور 1391, 15:23 عصر
از دیتا ، add new data source رو بزن ، دوبار next رو بزن ،بعد هم new connection ، اونوقت change رو بزن و acces databas رو انتخاب کن و دیتابیست رو بیار تو برنامه ، و فیلد هات رو انتخاب کن.
بعداز این کار ها می تونی از پنجره دیتاسورس ، کنترل ها و گرید رو به روی فرم درگ کنی.

موفق باشی.

SharpSabre
پنج شنبه 23 شهریور 1391, 02:52 صبح
برای ثبت اطلاعات نیازی به دیتاست نیست دوست عزیز.
روش دیگه ای هم که گفتی من راجع بهش چیزی نمی دونم
اما شما با یه شی OleDBCommand می تونین به سادگی عمل ثبت رو انجام بدین .
نمونه کد :
OleDbCommand cmd=new OleDBCommand();
cmd.CommandText = "insert into table1(name,family) vlues('"+text1.text+"','"+text2.text+"')";
cmd.ExecueNonQuery();
البته دیگه کانکشن استرینگ رو ننوشتم و فرض کردم که ارتباط وصله
البته باید قبل از انجام عمل درج خصوصیت Connection مربوط به شی cmd رو با کانکشن مورد نظر برابر کنید.
اگر سوالی بود بپرسید.

con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|/Database.accdb;Persist Security Info=True;Jet OLEDB:Database Password=xxx");

con.Open();

string query = "INSERT INTO [User Info] (Name, family, tell, Address, cost, RenainCost, info, pcINuse, [time login], [time logout], registered, [on or off], warning, [group box], [password], [fee type], Avatar, birthday, totallyCharge, AddedMoney, GamePlaying, GameFavorate, TimePassChanged, GiftCharged, TimeNow) VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox6.Text + "','" + textBox8.Text + "','" + null + "','" + null + "','" + null + "','" + textBox9.Text + "','" + null + "','" + null + "','" + null + "','" + textBox7.Text + "','" + comboBox1.SelectedText + "','" + pictureBox1.ImageLocation + "','" + null + "','" + textBox6.Text + "','" + textBox9.Text + "','" + null + "','" + null + "','" + textBox7.Text + "','" + null + "','" + textBox9.Text + "')";
OleDbCommand myCommand = new OleDbCommand();
myCommand.CommandText = query;
myCommand.Connection = con;
myCommand.ExecuteNonQuery();

con.Close();
MessageBox.Show("داده‌ها با موفقیت ثبت گردید!");

خطا :

An INSERT INTO query cannot contain a multi-valued field.

ehsan7007
پنج شنبه 23 شهریور 1391, 09:11 صبح
من اکسس نصب ندارم ، تا ظهر نصب می کنم ، برنامت رو می نویسم و برات یه نمونه می زارم.

SharpSabre
پنج شنبه 23 شهریور 1391, 14:27 عصر
من اکسس نصب ندارم ، تا ظهر نصب می کنم ، برنامت رو می نویسم و برات یه نمونه می زارم.
خیلی ممنون !!!

ehsan7007
پنج شنبه 23 شهریور 1391, 18:11 عصر
ببخشید دیر شد . افیس نصب نمی شد!

SharpSabre
پنج شنبه 23 شهریور 1391, 18:36 عصر
ببخشید دیر شد . افیس نصب نمی شد!
دستت درد نکنه ، شما با VS 2010 برنامه رو نوشتید ؟ :( ولی باز هم ممنون Source ها رو نگاه می کنم.

SharpSabre
پنج شنبه 23 شهریور 1391, 20:57 عصر
private void button3_Click(object sender, EventArgs e)
{
//try
{
//New Job
con.Open();

string query = "INSERT INTO [User Info] (Name, family, tell, Address, cost, RenainCost, info, pcINuse, [time login], [time logout], registered, [on or off], warning, [group box], [password], [fee type], Avatar, birthday, totallyCharge, AddedMoney, GamePlaying, GameFavorate, TimePassChanged, GiftCharged, TimeNow) VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox6.Text + "','" + textBox8.Text + "','" + null + "','" + null + "','" + null + "','" + DateTime.Now + "','" + null + "','" + null + "','" + null + "','" + textBox7.Text + "','" + comboBox1.SelectedText + "','" + null + "','" + null + "','" + null + "','" + null + "','" + null + "','" + null + "','" + null + "','" + null + "','" + null + "')";
// //INSERT INTO [User Info] (Name, family, tell, Address, cost, RenainCost, info, pcINuse, [time login], [time logout], registered, [on or off], warning, [group box], [password], [fee type], Avatar, birthday, totallyCharge, AddedMoney, GamePlaying, GameFavorate, TimePassChanged, GiftCharged, TimeNow) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
OleDbCommand myCommand = new OleDbCommand();
myCommand.CommandText = query;
myCommand.Connection = con;
myCommand.ExecuteNonQuery();

con.Close();
MessageBox.Show("داده‌ها با موفقیت ثبت گردید!");
}
//catch { con.Close(); MessageBox.Show("sorry"); }
}

Exception : An INSERT INTO query cannot contain a multi-valued field

ehsan7007
پنج شنبه 23 شهریور 1391, 22:19 عصر
چرا اونطور که من نوشتم ننوشتی؟

SharpSabre
جمعه 24 شهریور 1391, 01:53 صبح
چرا اونطور که من نوشتم ننوشتی؟
احسان جان خوب که نگاه کردم دبدم دستورات شما با من فقط سر متغیر گرفته شده با هم فرق داره و کمی گشتم تو وب و بالاخره تونستم اون سه مشکل رو بر طرف کنم و دوست دارم که در اختیار بقیه هم بذارم :


DataSync موقع اضافه کردن دیتابیس به برنامه .
Multi-Valued هنگام Adapter کردن .
ISAM هنگام استفاده از ConnectionStirng .



باید ویندوز دوباره نصب بشه ظاهرا .
مقدار های null بهتره که اصلا مقدار دهی نشه و از لیست متغیرها خارج بشن اگر DBNUll ممکنه و شما مقدار دهی اشتباه دارید مثل قرار دادن عکس در DB
مشکل دستوری اتصال به دیتابیس ConnectionString : Jet OLEDB:Database Password=xxx قسمت قرمز رنگ رو جا انداخته بودم.

با تشکر از دوستانی که راهنمایی کردند مخصوصا آقا احسان .