В прошлом я делал небольшие фрагменты базы данных, включая SQL (хотя я не знаю, какие они были); в одном из них я уверен, что есть ключевое слово 'occnum' или аналогичное, что позволило строке в таблице без уникальных полей быть адресованными индексом?C# OleDbDataAdapter; число вхождения?
В моей нынешней ситуации, спустя несколько лет и совершенно другом рабочем месте, я столкнулся с написанием приложения C#, которое позволяет редактировать базу данных Access для конкретной компании. В этой базе данных отсутствуют первичные ключи, поэтому я попытался найти аналогичную функциональность «число номеров» для редактирования определенных строк и ничего не нашел. Изменение структуры базы данных не является опцией, и ни одно из полей не является уникальным.
В качестве примера, я использую OleDbDataAdapter для запроса некоторых строк следующим образом:
List<string> result = new List<string>();
DataSet dataSet = new DataSet();
OleDbDataAdapter oleDBA = new OleDbDataAdapter(new OleDbCommand("SELECT " + FIELDNAME_ITEMDATA_TAG + " FROM " + TABLENAME_ITEMDATA + " WHERE " + FIELDNAME_ITEMDATA_AREANUMBER + " = " + Area.ToString(), oleDbConnection));
oleDBA.Fill(dataSet, "ResourceString");
foreach (DataRow dr in dataSet.Tables[0].Rows)
{
result.Add(dr.ItemArray[0].ToString());
}
Списка строки затем используются для заполнения ListBox. При записи на поле списка заселены, я хотел бы иметь возможность запросить отдельную строку по его количеству вхождений, что-то вроде:
"SELECT " + FIELDNAME_ITEMDATA_TAG + " FROM " + TABLENAME_ITEMDATA + " WHERE " + FIELDNAME_ITEMDATA_AREANUMBER + " = " + Area.ToString(), oleDbConnection AND OCCNUM = " + OccNum
Является ли это выполнимо? Я просто не смог найти правильное ключевое слово?
Вы действительно, ** действительно ** хотите параметризовать эти запросы «OleDbCommand». Посмотрите, как использовать 'OleDbParameter'. – casperOne
Если в качестве первичного ключа нет уникального столбца, есть ли какая-то _комбинация_ столбцов, которые уникальны, которые вы могли бы использовать? –