#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. Пожалуйста, объясните свой ответ, чтобы сделать его хорошим ответом.