Я изучаю C# с прошлой недели и базы данных за пару дней go, поэтому, если вы видите что-то подозрительное и спрашиваете себя: «Почему он так сделал?», Ответ будет вероятно, это будет «Потому что это все, что я знаю на данный момент».
В названии я сказал «букв», потому что, если я использую строку чисел, это работает.
У меня есть крошечная база данных с тремя столбцами. Id (int), FirstName (текст) и LastName (текст). Идентификатор уникальный, первичный ключ и автоинкременты. FirstName уникален. Эти три не равны нулю. В этой базе данных у меня есть две записи:
Id FirstName LastName
3-6666 2222
4- Test O'Test
Это мой метод:
public static bool isOnDb(string nombre, string apellido)
{
bool flag = false;
{
try
{
using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
{
string tempName = "Test"; // This is temporarily replacing the argument 'nombre'
int tempNum= 3; // More testing. See below
//cnn.Query<Person>($"select * from Person where FirstName = { tempName }", new DynamicParameters());
// This four lines below are just for testing. They are going to be deleted
var output = cnn.Query<Person>($"select * from Person where FirstName = { tempName }", new DynamicParameters());
var person = output.First();
Console.WriteLine("Funciona");
Console.WriteLine($"{ person.Id } - { person.FullName }");
flag = true;
return flag;
}
}
catch (Exception)
{
Console.WriteLine("Derecho a excepcion");
return flag;
}
}
}
В основном, если tempName = "Test", то происходит исключение. Но если tempName = "6666", он возвращает строку. Еще пробовал выбирать по id. Вот почему там tempNum.
int tempNum= 4;
var output = cnn.Query<Person>($"select * from Person where Id = { tempNum }", new DynamicParameters());