ฐานข้อมูล เป็น ms access ครับ
อยากเพิ่มทีละหลายๆแถวครับ
ลองแบบนี้แล้ว
https://stackoverflow.com/questions/2972974/how-should-i-multiple-insert-multiple-records
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้string connectionString = Properties.Settings.Default.wordConnectionString;
string insertQuery = "INSERT INTO Table1 (WordEng, _Void, WordTh) VALUES(@WordEng, @_Void, @WordTh)";
string sql = "";
int batchSize = 0;
using (System.Data.OleDb.OleDbConnection connection = new System.Data.OleDb.OleDbConnection(connectionString))
{
using (System.Data.OleDb.OleDbCommand command = new System.Data.OleDb.OleDbCommand(insertQuery, connection))
{
// define your parameters ONCE outside the loop, and use EXPLICIT typing
command.Parameters.Add("@WordEng", System.Data.OleDb.OleDbType.LongVarWChar);
command.Parameters.Add("@_Void", System.Data.OleDb.OleDbType.LongVarWChar);
command.Parameters.Add("@WordTh", System.Data.OleDb.OleDbType.LongVarWChar);
connection.Open();
foreach (ExcelWorksheet worksheet in package.Workbook.Worksheets)
{
int colCount = worksheet.Dimension.End.Column; //get Column Count
int rowCount = worksheet.Dimension.End.Row; //get row count
for (int row = 1; row <= rowCount; row++)
{
if (!string.IsNullOrEmpty(worksheet.Cells[row, 1].Value?.ToString().Trim()))
{
if (!worksheet.Cells[row, 1].Value.ToString().Trim().Contains(" "))
{
string cri = worksheet.Cells[row, 1].Value?.ToString().Trim().ToLower();
//this.toolStripStatusLabel1.Text = "check:" + cri;
if (!string.IsNullOrEmpty(cri) &&
!string.IsNullOrEmpty(worksheet.Cells[row, 2].Value?.ToString().Trim())
&& !string.IsNullOrEmpty(worksheet.Cells[row, 3].Value?.ToString().Trim())
&& !s.Contains(cri))
{
this.table1BindingSource.Filter = "WordEng = '" + cri + "'";
System.Threading.Thread.Sleep(1000);
if (string.IsNullOrEmpty(textBox1.Text))
{
i++;
/* table1TableAdapter.Insert(cri,
worksheet.Cells[row, 2].Value?.ToString().Trim(),
worksheet.Cells[row, 3].Value?.ToString().Trim());*
// now just SET the values
command.Parameters["@WordEng"].Value = cri;
command.Parameters["@_Void"].Value = worksheet.Cells[row, 2].Value?.ToString().Trim();
command.Parameters["@WordTh"].Value = worksheet.Cells[row, 2].Value?.ToString().Trim();
command.ExecuteNonQuery();
toolStripStatusLabel1.Text = "Add:" + cri;
s += "_" + worksheet.Cells[row, 1].Value?.ToString().Trim();
}
}
}
}
}
}
connection.Close();
}
}
เหมือนจะยังช้าอยู่ 5000 กว่าแถวก็ใช้เวลาหลายนาทีกว่าจะเสร็จ ครับ
ไม่ทราบว่ามีวิธีที่เร็วกว่านี้ ไม๊ ครับ
C# WinApp ms access รบกวนขอโค้ดในการเพิ่มข้อมูลทีละหลายๆพร้อมกันในคราวเดียวหน่อยครับ
อยากเพิ่มทีละหลายๆแถวครับ
ลองแบบนี้แล้ว
https://stackoverflow.com/questions/2972974/how-should-i-multiple-insert-multiple-records
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
เหมือนจะยังช้าอยู่ 5000 กว่าแถวก็ใช้เวลาหลายนาทีกว่าจะเสร็จ ครับ
ไม่ทราบว่ามีวิธีที่เร็วกว่านี้ ไม๊ ครับ