问题描述
在MysqL中获取问题时,我想将学生的级别和学生的班级(SQFLite)与学生的级别和学生的班级(MysqL)相匹配。
我有一个外部MysqL数据库(localhost),其中包含一个“问题”表,该表以其级别(容易,中等,困难)和其类(第一类,第二类,第三类)为特征。我有一个内部数据库(SQFLite),其中包含一个“学生”表,其中的级别和类属性包含在外部MysqL数据库中。我只想发布与内部数据库“ SQFLite”中已经添加的学生的级别和班级相对应的问题。
问题::我以JSON形式发布了所有问题,但与当前添加的学生的级别和班级不符。
要求:我想要在内部数据库“ SQFLite”中添加新学生及其级别和班级时,显示的问题必须与该学生的问题相匹配。
<?PHP
header("Content-type: application/json; charset=utf-8");
try{
$conn = new PDO('MysqL:host=localhost;dbname=relations;charset=utf8','root','');
$conn ->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $exc){
echo $exc->getMessage();
die("Could not connect");
}
?>
<?PHP
$makeQuery ="SELECT * FROM questions ";
$stamement = $conn-> prepare($makeQuery);
$stamement -> execute();
$myarray = array();
while ($resultsFrom = $stamement->fetch()){
array_push(
$myarray,array(
"idques"=>intval($resultsFrom['idques']),"description"=>$resultsFrom['description']
)
);
}
echo json_encode($myarray);
?>
model.dart:包含学生的模型
class Student {
int _id;
String _name;
String _level;
String _classes ;
String _date;
Student(this._name,this._level,this._classes,this._date);
Student.withId(this._id,this._name,this._date);
String get date => _date;
String get level => _level;
String get classes => _classes;
String get name => _name;
int get id => _id;
set date(String value) {
_date = value;
}
set level(String value) {
_level = value;
}
set classes(String value) {
_classes = value;
}
set name(String value) {
if (value.length <= 255) {
_name = value;
}
}
Map<String,dynamic> toMap() {
var map = Map<String,dynamic>();
map["id"] = this._id;
map["name"] = this._name;
map["level"] = this._level;
map["classes"] = this._classes;
map["date"] = this._date;
return map;
}
Student.getMap(Map<String,dynamic> map){
this._id = map["id"];
this._name = map["name"];
this._level = map["level"];
this._classes= map["classes"];
this._date = map["date"];
}
}
sql_helper.dart:包含内部数据库(SQFLite)
import 'package:sqflite/sqflite.dart';
import 'dart:async';
import 'dart:io';
import 'model.dart';
import 'package:path_provider/path_provider.dart';
class sql_Helper {
static sql_Helper dbHelper;
static Database _database;
sql_Helper._createInstance();
factory sql_Helper() {
if (dbHelper == null) {
dbHelper = sql_Helper._createInstance();
}
return dbHelper;
}
String tableName = "students_table";
String _id = "id";
String __name = "name";
String __level= "level";
String __classes = "classes";
String __date = "date";
Future<Database> get database async {
if (_database == null){
_database = await initializedDatabase();
}
return _database;
}
Future<Database> initializedDatabase() async {
Directory directory = await getApplicationDocumentsDirectory();
String path = directory.path + "students.db";
var studentDB = await openDatabase(path,version: 1,onCreate: createDatabase);
return studentDB;
}
void createDatabase(Database db,int version) async {
await db.execute(
"CREATE TABLE $tableName($_id INTEGER PRIMARY KEY AUTOINCREMENT,$__name TEXT,$__level TEXT,$__classes TEXT,$__date TEXT )");
}
Future<List<Map<String,dynamic>>> getStudentMapList() async {
Database db = await this.database;
var result = await db.query(tableName,orderBy: "$_id ASC");
return result;
}
Future<int> insertStudent(Student student) async {
Database db = await this.database;
var result = await db.insert(tableName,student.toMap());
return result;
}
Future<int> updateStudent(Student student) async{
Database db = await this.database;
var result = await db.update(tableName,student.toMap(),where: "$_id = ?",whereArgs: [student.id]);
return result;
}
Future<int> deleteStudent(int id) async {
var db = await this.database;
int result = await db.rawDelete("DELETE FROM $tableName WHERE $_id = $id");
return result;
}
Future<int> getCount() async {
Database db = await this.database;
List<Map<String,dynamic>> all = await db.rawQuery("SELECT COUNT (*) FROM $tableName");
int result = Sqflite.firstIntValue(all);
return result;
}
Future<List<Student>> getStudentList() async{
var studentMapList = await getStudentMapList();
int count = studentMapList.length;
List<Student> students = new List<Student>();
for (int i = 0; i <= count -1; i++){
students.add(Student.getMap(studentMapList[i]));
}
return students;
}
}
question.dart:包含问题列表
import 'package:Flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
class Questions extends StatefulWidget {
@override
_Questionsstate createState() => _Questionsstate();
}
class _Questionsstate extends State<Questions> {
getmethod()async{
String theUrl = 'http://10.0.2.2/Try/Try.PHP';
var res = await http.get(Uri.encodeFull(theUrl),headers:{"Accept":"application/json"});
var responsBody = json.decode(res.body);
print(responsBody);
return responsBody;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: new AppBar(
title:Text("Questions",style: TextStyle(fontWeight: FontWeight.bold),),backgroundColor: Colors.blue[700],backgroundColor: Colors.blue[99],body:FutureBuilder(
future: getmethod(),builder: (BuildContext context,AsyncSnapshot snapshot){
List snap = snapshot.data;
if(snapshot.connectionState == ConnectionState.waiting){
return Center(
child: CircularProgressIndicator(),);
}
if(snapshot.hasError){
return Center(
child: Text("Error .... "),);
}
return ListView.separated(
separatorBuilder: (context,index) => Divider(
color: Colors.indigo,itemCount: snap.length,itemBuilder: (context,index){
return ListTile(
title: Text(
"${snap[index]['description']}",style: TextStyle(fontSize: 18.0)),leading:Icon(Icons.question_answer,color:Colors.green,size: 20,);
},);
},);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)