PDA

View Full Version : ثبت اطلاعات در دیتابیس



f_naderi
یک شنبه 12 دی 1400, 12:02 عصر
Class1.con.Open(); Class1.str1 = "insert into Table1(ID,F_Name,L_Name,public,father,Gender,basic ,School,Class,Field,Headmaster,Test) values('" + textBox2.Text.Trim() + "','" + textBox3.Text.Trim() + "','" + textBox4.Text.Trim() + "','" + textBox5.Text.Trim() + "','" + textBox9.Text.Trim() + "','" + comboBox1.Text.Trim() + "','" + textBox8.Text.Trim() + "','" + textBox7.Text.Trim() + "','" + textBox6.Text.Trim() + "','" + textBox10.Text.Trim() + "','" + textBox11.Text.Trim() + "'," + int.Parse(textBox1.Text.Trim()) + ")";
Class1.cmd1 = new OleDbCommand(Class1.str1, Class1.con);
Class1.cmd1.ExecuteNonQuery();
Class1.con.Close();

با سلام. دوستان کد بالا Error نمیده ولی در جدول ثبت هم نمیکنه.ممنون میشم راهنمایی بفرمایید
ولی کد پایینی کار میکنه
Class1.con.Open(); Class1.str = "insert into Key_Table(Test_Name) values('" + textBox1.Text.Trim() + "')";
Class1.cmd = new OleDbCommand(Class1.str, Class1.con);
Class1.cmd.ExecuteNonQuery();
Class1.con.Close();

AtabakFathi
یک شنبه 12 دی 1400, 17:11 عصر
Class1.con.Open(); Class1.str1 = "insert into Table1(ID,F_Name,L_Name,public,father,Gender,basic ,School,Class,Field,Headmaster,Test) values('" + textBox2.Text.Trim() + "','" + textBox3.Text.Trim() + "','" + textBox4.Text.Trim() + "','" + textBox5.Text.Trim() + "','" + textBox9.Text.Trim() + "','" + comboBox1.Text.Trim() + "','" + textBox8.Text.Trim() + "','" + textBox7.Text.Trim() + "','" + textBox6.Text.Trim() + "','" + textBox10.Text.Trim() + "','" + textBox11.Text.Trim() + "'," + int.Parse(textBox1.Text.Trim()) + ")";
Class1.cmd1 = new OleDbCommand(Class1.str1, Class1.con);
Class1.cmd1.ExecuteNonQuery();
Class1.con.Close();

با سلام. دوستان کد بالا Error نمیده ولی در جدول ثبت هم نمیکنه.ممنون میشم راهنمایی بفرمایید
ولی کد پایینی کار میکنه
Class1.con.Open(); Class1.str = "insert into Key_Table(Test_Name) values('" + textBox1.Text.Trim() + "')";
Class1.cmd = new OleDbCommand(Class1.str, Class1.con);
Class1.cmd.ExecuteNonQuery();
Class1.con.Close();


کد بالا در قسمت آخر باید دو تا ' ' می ذاشتید که نذاشتید.
باید اینطور بشه:
Class1.con.Open(); Class1.str1 = "insert into Table1(ID,F_Name,L_Name,public,father,Gender,basic ,School,Class,Field,Headmaster,Test) values('" + textBox2.Text.Trim() + "','" + textBox3.Text.Trim() + "','" + textBox4.Text.Trim() + "','" + textBox5.Text.Trim() + "','" + textBox9.Text.Trim() + "','" + comboBox1.Text.Trim() + "','" + textBox8.Text.Trim() + "','" + textBox7.Text.Trim() + "','" + textBox6.Text.Trim() + "','" + textBox10.Text.Trim() + "','" + textBox11.Text.Trim() + "','" + int.Parse(textBox1.Text.Trim()) + "')"; Class1.cmd1 = new OleDbCommand(Class1.str1, Class1.con);
Class1.cmd1.ExecuteNonQuery();
Class1.con.Close();

f_naderi
دوشنبه 13 دی 1400, 01:10 صبح
ممنون از راهنماییتون. فیلد آخر از نوع number هست ولی من برای اطمینان هم با تک کوتیشن امتحان کردم و هم بدون اون ولی بازم ثبت نمیکنه. دستور Executenonequery رو اجرا نمیکنه. این دو تا دستور درج هر دو مربوط به یک دکمه هستن ولی نمیدونم چرا درج اول انجام میشه ولی دومی نه

f_naderi
دوشنبه 13 دی 1400, 20:31 عصر
دوستان برای دستور insert که به مشکل برخوردم، من داده ها رو از طریق اکسل دریافت می کنم و می خوام در جدول درج کنم.این کد کاملش هست :(کد زیر برای رویداد کلیک دکمه ثبت هست)
string code = ""; string name = "";
string l_name = "";
string public1 = "";
string father = "";
string Gender = "";
string basic = "";
string School = "";
string Class = "";
string Field = "";
string Headmaster = "";


try
{
Class1.ds.Clear();
Class1.ds.Tables.Clear();
Class1.conect.Open();
Class1.str = "insert into Key_Table(Test_Name) values('" + textBox1.Text.Trim() + "')";
Class1.command = new OleDbCommand(Class1.str, Class1.conect);
Class1.command.ExecuteNonQuery();



Class1.str_select = "select Test_Code from Key_Table";
Class1.da = new OleDbDataAdapter(Class1.str_select, Class1.conect);
Class1.da.Fill(Class1.ds);
int r = Class1.ds.Tables[0].Rows.Count;


textBox3.Text = Class1.ds.Tables[0].Rows.Count.ToString();
textBox2.Text = Class1.ds.Tables[0].Rows[r - 1][0].ToString();
Class1.Test_Code = int.Parse(Class1.ds.Tables[0].Rows[r - 1][0].ToString());



if (checkBox1.Checked)
{
Class1.range = Class1.xlWorkSheet.UsedRange;
int rw = Class1.range.Rows.Count;
for (int i = 2; i <= rw; i++)
{


code = (string)(Class1.range.Cells[i, 1] as Excel.Range).Value2;
name = (string)(Class1.range.Cells[i, 2] as Excel.Range).Value2;
l_name = (string)(Class1.range.Cells[i, 3] as Excel.Range).Value2;
public1 = (string)(Class1.range.Cells[i, 4] as Excel.Range).Value2;
father = (string)(Class1.range.Cells[i, 5] as Excel.Range).Value2;
Gender = (string)(Class1.range.Cells[i, 6] as Excel.Range).Value2;
basic = (string)(Class1.range.Cells[i, 7] as Excel.Range).Value2;
School = (string)(Class1.range.Cells[i, 8] as Excel.Range).Value2;
Class = (string)(Class1.range.Cells[i, 9] as Excel.Range).Value2;
Field = (string)(Class1.range.Cells[i, 10] as Excel.Range).Value2;
Headmaster = (string)(Class1.range.Cells[i, 11] as Excel.Range).Value2;


Class1.str1 = "insert into Condidate_Table(Candidate,F_Name,L_Name,public,fat her,Gender,basic,School,Class,Field,Headmaster,Tes t_Code) values('" + code + "','" + name + "','" + l_name + "','" + public1 + "','" + father + "','" + Gender + "','" + basic + "','" + School + "','" + Class + "','" + Field + "','" + Headmaster + "'," + Class1.Test_Code + ")";
Class1.command1 = new OleDbCommand(Class1.str1, Class1.conect);
Class1.command1.ExecuteNonQuery();
}
MessageBox.Show("insert ok");
Class1.xlWorkBook.Close();
Class1.xlApp.Quit();
}
else
{
MessageBox.Show("unchecked");
}
Class1.conect.Close();
}
catch (Exception ex)
{
Class1.conect.Close();
MessageBox.Show(ex.ToString());
}



و این کد برای باز کردن فایل اکسل جهت وارد کردن اطلاعات است:
try {
Class1.xlApp = new Excel.Application();
Class1.xlWorkBook = Class1.xlApp.Workbooks.Open(Class1.oSavePath.ToStr ing());
Class1.xlWorkSheet = (Excel.Worksheet)Class1.xlWorkBook.Worksheets.get_ Item(1);
Class1.xlApp.Visible = true;
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
حالا وقتی برنامه رو اجرا میکنم پیغام میده که نمی تونه double رو به string تبدیل کنه در صورتی که من داده دابل ندارم همه استرینگ هستن فقط فیلد آخر یعنی Test_code از جنسnumber هست. دستور insert اول کارمیکنه ولی دومی خیر

mazoolagh
سه شنبه 14 دی 1400, 08:24 صبح
سلام و روز خوش

1- اگر از پارامتر استفاده کنین هم برنامه خواناتر و نگهداری اون آسونتر میشه و هم این که دردسر " ندارین:
Class1.con.Open();
Class1.str1 = "insert into Table1(ID,F_Name, .... ,Test) values("?,? .... ?");
Class1.cmd1 = new OleDbCommand(Class1.str1, Class1.con);
Class1.cmd1.parameters.add("@ID" , oledbtype.varchar , 10).value = textBox2.Text.Trim();
....
....
Class1.cmd1.parameters.add("@Test" , oledbtype.integer).value = textBox1.Text.Trim();
Class1.cmd1.ExecuteNonQuery();
Class1.con.Close();

2- برای اطمینان از این که دستور insert شما درست هست اون رو در ssms هم تست کنین.

mehran6764
سه شنبه 14 دی 1400, 10:47 صبح
سلول های ایکسل هم نوع داده دارن ، اون سطر و ستونی رو که میخوایین مقدار داخلش درج کنید نوعش رو چک کنید (منظورم داخل اکسل هست )
ضمنا با پکیج Spire کار کردن با محصولات آفیس راحتی بیشتری داره ، اما نسخه رایگان محدودیتی هایی هم داره



Free Edition $0
Free version is limited to 5 sheets per workbook and 200 rows per sheet. It doesn't support the print function. When converting Excel files to other formats, such as you can only get the first 3 pages of PDF/XPS, and you can only convert first 3 sheets to Images.








لینک


(https://www.e-iceblue.com/Introduce/excel-for-net-introduce.html)

f_naderi
سه شنبه 14 دی 1400, 16:35 عصر
از هر سه بزرگوار عزیز ممنونم. ستون های دیتابیس رو چک کردم ولی نوع داده جدول با نوعی که می خوام درج کنم یکسان هست.
دستور دیگری غیر این دو هست که بتونم تکست وارد شده در هر یک از سلول های Sheet رو بخونم.
code = (string)(Class1.range.Cells[i, 1] as Excel.Range).Value2;
این دستور دوم که اصلا تکست وارد شده رو نشون نمیده:
code = (string)(Class1.range.Cells[i, 1] as Excel.Range).Text;
احتمال میدم مشکل از این باشه