проблема
что я пишу внутри цикла, чтобы отобразить похожий код элемента в datagridview и вставить другой код элемента на сервере базы данных sql.
Таблица элементов базы данных SQL Server (2014)
ItemCode(pk) ItemName
001 mouse
002 keyboard
003 Headphone
В файле Excel лист 2010
ItemCode ItemName
001 mouse
002 keyboard
004 screen
005 Ram
На самом деле мне нужно при импорте файла Excel вставить различные элементы кода, которые не существуют
в базе данных сервера sql и в элементах Exist Items On Database и Found в Excel не вставлять, а отображать в datagridview.
в соответствии с моим делом вставьте код товара 004,005 в таблицу товаров.
и показать 001,002 в виде сетки как существующие элементы.
моя функция, как показано ниже
мой код (внутри цикла)
public static void ImportFromExcelToDataBase()
{
Datatable dt = ShowExcelData();
DataTable dtItems = GetSqlItems();
for (int i = 0; i < dt.Rows.Count; i++)
{
//what i write here
// if itemcode exist on excel exist on sql server database
then display similar items exist on database and excel as 001,002 on datagridview
//else
// do insert data
string Insert = "Insert Into Values (" + data + ")";
DataAccess.ExecuteNonQuery(Insert);
}
}
public DataTable ShowExcelData()
{
string connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", txtpath.Text);
OleDbConnection con = new OleDbConnection(connectionString);
con.Open();
DataTable dt = new DataTable();
dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string SheetName = dt.Rows[0]["TABLE_NAME"].ToString();
OleDbCommand com = new OleDbCommand();
com.Connection = con;
com.CommandText = @"SELECT [ItemCode],[ItemsName],[ItemAddress] FROM [" + SheetName + "] ";
OleDbDataAdapter oledbda = new OleDbDataAdapter();
oledbda.SelectCommand = com;
DataSet ds = new DataSet();
oledbda.Fill(ds);
dt = ds.Tables[0];
con.Close();
return dt;
}
dt = ShowExcelData();
public DataTable GetSqlItems()
{
string GetItems = @"select ItemCode,ItemsName,ItemAddress from Items";
DataTable tbGetItems = DataAccess.ExecuteDataTable(GetItems );
return tbGetItems ;
}
dtItems = GetSqlItems();
сделайте ItemCode первичным ключом, ваша команда потерпит неудачу, а затем вы узнаете, какие существуют элементы
Других решений пока нет …