Я новичок в SQL/SQLite, но когда я пытаюсь запустить этот метод для поиска в базе данных SQlite, он терпит неудачу в con.Open(), говоря: «Исключение системного аргумента: недопустимые символы в пути». Я попытался удалить пробел между данными и источником, а также попытался сделать нижний регистр C:. Я использую SQLite, найденный в диспетчере пакетов Nuget.
private void searchDB(string search1, string search2)
{
//build connection to sqlite
string cs = "Data Source=C:\flowData.db;Version=3;";
using (SQLiteConnection con = new SQLiteConnection(cs))
{
con.Open();
string stm = "SELECT * FROM locationData";
using (SQLiteCommand cmd = new SQLiteCommand(stm, con))
{
using (SQLiteDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
string poll = rdr["FacilityName"].ToString();
if (poll.Contains(search1) || poll.Contains(search2))
{
searchResult.Items.Add(poll);
}
}
}
}
con.Close();
}
}





Похоже, вам нужно избежать обратной косой черты.
string cs = "Data Source=C:\\flowData.db;Version=3;";
Вы также можете использовать дословную строку
string cs = @"Data Source=C:\flowData.db;Version=3;";
Исходная строка содержит символ \f, который является недопустимым символом пути.
Спасибо! Как я это пропустил :)
@wildBlue - Мне потребовалось немного времени, чтобы вспомнить.
Просто к вашему сведению в дополнение к ответу ChaosPandion ниже, если вам интересно, что именно есть в вашей строке
\f: управляющая последовательность символов\fпредставляет собой так называемый символ «подачи формы» (десятичное число ASCII 12, шестнадцатеричный 0x0C).