遍历并将所有列表框项目添加到 Access 数据库(到单独的行中)
Loop Through and Add All ListBox Items To an Access Database (into seperate rows)
我正在使用以下代码尝试循环遍历列表框,并将每个项目插入到访问数据库中的单独行中。该代码仅适用于第一个列表框项目,但会按预期插入它。
我知道如何需要循环以便插入所有项目而不仅仅是第一个
foreach (var listBoxItem in ServicePartsList.Items)
{
item = listBoxItem.ToString();
string[] result = item.Split(',');
MessageBox.Show(result[0] + result[1]);
using (OleDbConnection conn = new OleDbConnection())
{
conn.ConnectionString = connection.dbdataSource;
// insert into database
using (OleDbCommand addPart = new OleDbCommand())
{
//Open Connection
conn.Open();
addPart.Connection = conn;
addPart.CommandText = "INSERT INTO servicePart (ServiceID, PartNo, Quantity) VALUES (@sID, " + "@partNo, " + "@quantity)";
addPart.Parameters.AddWithValue("sID", ModelCode + ModelYear + ButtonClick);
addPart.Parameters.AddWithValue("partNo", result[0]);
addPart.Parameters.AddWithValue("quantity", result[1]);
//execute SQL
int recordsAdded = addPart.ExecuteNonQuery();
//Close DB Connection
conn.Close();
}
可能不是确切的解决方案,但与其循环打开连接,不如打开一次,然后使用一个连接插入多行:
using (OleDbConnection conn = new OleDbConnection())
{
conn.ConnectionString = connection.dbdataSource;
conn.Open();
foreach (var listBoxItem in ServicePartsList.Items)
{
item = listBoxItem.ToString();
string[] result = item.Split(',');
MessageBox.Show(result[0] + result[1]);
// insert into database
using (OleDbCommand addPart = new OleDbCommand())
{
//Open Connection
addPart.Connection = conn;
addPart.CommandText = "INSERT INTO servicePart (ServiceID, PartNo, Quantity) VALUES (@sID, " + "@partNo, " + "@quantity)";
addPart.Parameters.AddWithValue("sID", ModelCode + ModelYear + ButtonClick);
addPart.Parameters.AddWithValue("partNo", result[0]);
addPart.Parameters.AddWithValue("quantity", result[1]);
//execute SQL
int recordsAdded = addPart.ExecuteNonQuery();
}
}
//Close DB Connection
conn.Close();
}
我正在使用以下代码尝试循环遍历列表框,并将每个项目插入到访问数据库中的单独行中。该代码仅适用于第一个列表框项目,但会按预期插入它。
我知道如何需要循环以便插入所有项目而不仅仅是第一个
foreach (var listBoxItem in ServicePartsList.Items)
{
item = listBoxItem.ToString();
string[] result = item.Split(',');
MessageBox.Show(result[0] + result[1]);
using (OleDbConnection conn = new OleDbConnection())
{
conn.ConnectionString = connection.dbdataSource;
// insert into database
using (OleDbCommand addPart = new OleDbCommand())
{
//Open Connection
conn.Open();
addPart.Connection = conn;
addPart.CommandText = "INSERT INTO servicePart (ServiceID, PartNo, Quantity) VALUES (@sID, " + "@partNo, " + "@quantity)";
addPart.Parameters.AddWithValue("sID", ModelCode + ModelYear + ButtonClick);
addPart.Parameters.AddWithValue("partNo", result[0]);
addPart.Parameters.AddWithValue("quantity", result[1]);
//execute SQL
int recordsAdded = addPart.ExecuteNonQuery();
//Close DB Connection
conn.Close();
}
可能不是确切的解决方案,但与其循环打开连接,不如打开一次,然后使用一个连接插入多行:
using (OleDbConnection conn = new OleDbConnection())
{
conn.ConnectionString = connection.dbdataSource;
conn.Open();
foreach (var listBoxItem in ServicePartsList.Items)
{
item = listBoxItem.ToString();
string[] result = item.Split(',');
MessageBox.Show(result[0] + result[1]);
// insert into database
using (OleDbCommand addPart = new OleDbCommand())
{
//Open Connection
addPart.Connection = conn;
addPart.CommandText = "INSERT INTO servicePart (ServiceID, PartNo, Quantity) VALUES (@sID, " + "@partNo, " + "@quantity)";
addPart.Parameters.AddWithValue("sID", ModelCode + ModelYear + ButtonClick);
addPart.Parameters.AddWithValue("partNo", result[0]);
addPart.Parameters.AddWithValue("quantity", result[1]);
//execute SQL
int recordsAdded = addPart.ExecuteNonQuery();
}
}
//Close DB Connection
conn.Close();
}