Сервер отвечает пустым результатом, когда запрос «LIKE» используется с пакетом sqljocky5

#mysql #flutter #dart #xampp #sqljocky

#mysql #флаттер #dart #xampp #sqljocky

Вопрос:

Привет, я новичок в flutter, и я пытаюсь получить данные из базы данных MYSQL на основе ключевого слова, введенного пользователем. Но результат пуст, даже если данные присутствуют. Я использую пакет msqljocky5 для подключения к MYSQL.

  Future<Results> getProducts()async{
   if(searchValue==""){
   ConnectionSettings settings = new ConnectionSettings(
       host: '10.0.2.2',
       port: 3306,
       user: 'root',
       password:'',
       db: 'master'
   );
   dynamic db =  await MySqlConnection.connect(settings);
  try{
    Results results =   await (await db
        .execute('SELECT * from product'))
        .deStream();
    await db.close();
    return (results);
  }catch(e){
    print("Error01" e.toString());
  }
   }else{
     ConnectionSettings settings = new ConnectionSettings(
         host: '10.0.2.2',
         port: 3306,
         user: 'root',
         password:'',
         db: 'master'
     );
     dynamic db =  await MySqlConnection.connect(settings);
     try{
       print("Serach valuse is " searchValue);
       Results results =   await (await db
           .prepared('SELECT * from product WHERE productName LIKE "%?%"',[searchValue]))
           .deStream();
       await db.close();
       print("AffectedRows" results.affectedRows.toString());
       print(results);
       results.forEach((rw.Row rw) {print(rw[0]); });
       return (results);
     }catch(e){
       print("Error01" e.toString());
     }
   }}
 

Ответ №1:

Редактирование кода помогло мне устранить проблему.

 Results results =   await (await db
       .execute('SELECT * from product WHERE productName LIKE "$searchValue%"'))
       .deStream();
 

Ответ №2:

Столкнулся с той же проблемой. Проблема связана с .affectedRows .

Я полагаю, что это значение изменяется с помощью инструкций SQL UPDATE / DELETE, используйте .длина, поскольку она вернет 0 или значение, равное или большее 1, для проверки результатов.

Комментарии:

1. Пожалуйста, объясните свой ответ, чтобы сделать его хорошим ответом.