Здесь является частью таблицы с именем: < /p>
Код: Выделить всё
| ID | Name | InternalID |
|:----:|:---------:| :---------:|
| 1 | Emory Lu | 84765 |
| ... | ... | ... |
| 8 | John Smith| 52455 |
| 9 | John smith| 49 |
| ... | ... | ... |
< /code>
Обратите внимание, что в этой таблице присваивается два разных внутренних (тип строки). Во второй записи его фамилия началась с строчных "S".public DataTable findInternalID(string name)
{
RecordConnection.Open();
DataTable output = new DataTable();
OleDbCommand bdCommand = RecordConnection.CreateCommand() as OleDbCommand;
StringBuilder x = new StringBuilder();
// SELECT InternalID FROM EmployeeList WHERE Name = "(name)"
x.AppendLine("SELECT InternalID ");
x.AppendLine("FROM EmployeeList ");
x.AppendLine($"WHERE Name LIKE '%{name}%'");
bdCommand.CommandText = x.ToString();
_dataAdapter = new OleDbDataAdapter(bdCommand);
_dataAdapter.Fill(output);
RecordConnection.Close();
return output;
}
< /code>
Этот блок кода работает нормально для сотрудников, есть только одна запись, но для сотрудников с несколькими записями он заполнит все записи внутренних и выводов одновременно из -за этой строки: < /p>
x.AppendLine($"WHERE Name LIKE '%{name}%'");
< /code>
Поэтому я попытался изменить ключевое слово «аналогично" = ": < /p>
x.AppendLine($"WHERE Name = '%{name}%'");
< /code>
Но это дает мне ошибку. < /p>
Как я могу отредактировать свой код, поэтому при вводе «Джон Смит» только выводит «52455» и ввод "John Smith" только выходы "49". string name = "John Smith"; // or John smith
DataTable output = _accessManager.findInternalID(name);
String message = result.Rows[0][0].ToString(); // Or ROWS[1][0]
MessageBox.Show(message);
< /code>
Кстати, я использовал MS Access :) < /p>
================= Проблема решила! =================== < /p>
Я очень благодарю всех за то, что помог мне. Я принял во внимание предложение каждого, и вот мой окончательный код. Я использовал функцию strComp () Код: Выделить всё
public DataTable findInternalID(string name)
{
RecordConnection.Open();
DataTable output = new DataTable();
OleDbCommand bdCommand = RecordConnection.CreateCommand() as OleDbCommand;
StringBuilder x = new StringBuilder();
x.AppendLine("SELECT InternalID ");
x.AppendLine("FROM EmployeeList ");
x.AppendLine($"WHERE StrComp(Name, @name, 0) = 0;");
bdCommand.CommandText = x.ToString();
bdCommand.Parameters.AddWithValue("name", $"{name}");
_dataAdapter = new OleDbDataAdapter(bdCommand);
_dataAdapter.Fill(output);
RecordConnection.Close();
return output;
}
Подробнее здесь: https://stackoverflow.com/questions/711 ... in-c-sharp