вы можете проверить, что с помощью Linq или выполнения foreach или любого итерационного метода, который вы предпочитаете gvPurchasesSelected.Rows, перед выполнением dt.Rows.Add и проверьте, совпадают ли бренд, обозначение и тип (или поля, составляющие уникальный идентификатор для строк).
Я бы сделал что-то вроде этого:
if ( gvPurchasesSelected.Rows.Cast<DataGridViewRow>().Any(row => row.type == type &&
row.brand == brand &&
row.designation == designation))
continue;
else
dt.Rows.Add(....)
Надеюсь, это поможет!
Вы должны удалить кавычки вокруг имен ваших параметров в операторе INSERT.
Поэтому вместо
VALUES ('@uNameParam', '@bNavnParam', '@passwdParam', '@pc_idParam',
'@noterParam', '@licens_idParam')
используйте
VALUES (@uNameParam, @bNavnParam, @passwdParam, @pc_idParam,
@noterParam, @licens_idParam)
Благодаря rwwilden и Jorge Villuendas, ответ:
var insertSQL = new SQLiteCommand("INSERT INTO Brugere (navn, brugernavn, password, pc_id, noter, licens_id)" +
" VALUES (@uNavnParam, @bNavnParam, @passwdParam, @pc_idParam, @noterParam, @licens_idParam)", conn);
insertSQL.Parameters.AddWithValue("@uNavnParam", uNavn);
insertSQL.Parameters.AddWithValue("@bNavnParam", bNavn);
insertSQL.Parameters.AddWithValue("@passwdParam", passwd);
insertSQL.Parameters.AddWithValue("@pc_idParam", pc_id);
insertSQL.Parameters.AddWithValue("@noterParam", noter);
insertSQL.Parameters.AddWithValue("@licens_idParam", licens_id);
insertSQL.ExecuteNonQuery(); //Execute query
replace
VALUES ('@uNameParam', '@bNavnParam', '@passwdParam', '@pc_idParam', { {1}} '@noterParam', '@licens_idParam')
с
ЗНАЧЕНИЯ (?,?,?,?,?,?)