Java 如何根据Select查询结果更新TextView中的文本

Java 如何根据Select查询结果更新TextView中的文本,java,android,sql-server,database,select-query,Java,Android,Sql Server,Database,Select Query,我是Android新手,正在开发一个简单的测验应用程序 有3个选项和1个问题 问题和选项存储在数据库中 当应用程序启动时,我想做的是显示第一个问题和答案,点击正确或错误答案,更新问题和选项。表示显示下一个问题和选项 所以现在我可以成功地在屏幕上显示第一个问题和相关选项,但在单击时,它不会显示下一个问题 当我试图找到问题时,我发现我正在使用的代码只显示执行查询后的第一个值,而结果行数更多 我尝试将getstring()中的索引值从1更改为2和0,但没有结果 所以我的问题是我如何才能完成这项任务 这

我是Android新手,正在开发一个简单的测验应用程序

有3个选项和1个问题

问题和选项存储在数据库中

当应用程序启动时,我想做的是显示第一个问题和答案,点击正确或错误答案,更新问题和选项。表示显示下一个问题和选项

所以现在我可以成功地在屏幕上显示第一个问题和相关选项,但在单击时,它不会显示下一个问题

当我试图找到问题时,我发现我正在使用的代码只显示执行查询后的第一个值,而结果行数更多

我尝试将
getstring()
中的索引值从1更改为2和0,但没有结果

所以我的问题是我如何才能完成这项任务

这是我的密码

package com.example.android.quiz_app_androidmodule;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.os.AsyncTask;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;



public class MainActivity extends AppCompatActivity {
    ConnectionClass connectionClass;
    TextView Question, Score;
    Button btnlogin, btnA, btnB, btnC, btnStart;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        connectionClass = new ConnectionClass();

        btnlogin = (Button) findViewById(R.id.btnStart);

        btnA = (Button) findViewById(R.id.button1);
        btnB = (Button) findViewById(R.id.button2);
        btnC = (Button) findViewById(R.id.button3);
        Question = (TextView) findViewById(R.id.textViewQuestion);
        Score = (TextView) findViewById(R.id.textViewScore);


        btnlogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
             DoLogin doLogin = new DoLogin();
                doLogin.execute("");

                btnA.setVisibility(View.VISIBLE);
                btnB.setVisibility(View.VISIBLE);
                btnC.setVisibility(View.VISIBLE);
                Question.setVisibility(View.VISIBLE);
                Score.setVisibility(View.VISIBLE);
                btnlogin.setVisibility(View.GONE);


            }
        });


    }






    String z = "";
    String zA = "";
    String zB="";
    String zC="";
    int id = 1;
    int points;

    public class DoLogin extends AsyncTask<String, String, String> {

        Boolean isSuccess = false;


        @Override
        protected void onPostExecute(String r) {


            if (isSuccess) {
              Question.setText(z);
                btnA.setText(zA);
                btnB.setText(zB);
                btnC.setText(zC);
            }

        }

        @Override
        protected String doInBackground(String... params) {

            try {
                Connection con = connectionClass.CONN();
                if (con == null) {
                    z = "Error in connection with SQL server";
                } else {
                    String query = "select question from Question where quizID >= '0'";
                    Statement stmt = con.createStatement();
                    ResultSet rs = stmt.executeQuery(query);

                    String queryA = "select optionOne from Options where quizID >= '0'";
                    Statement stmtA = con.createStatement();
                    ResultSet rsA = stmtA.executeQuery(queryA);

                    String queryB = "select optionTwo from Options where quizID >= '0'";
                    Statement stmtB = con.createStatement();
                    ResultSet rsB = stmtB.executeQuery(queryB);


                    String queryC = "select optionThree from Options where quizID >= '0'";
                    Statement stmtC = con.createStatement();
                    ResultSet rsC = stmtC.executeQuery(queryC);
                    if (rs.next() | rsA.next() | rsB.next() | rsC.next()) {
                        z = rs.getString(id).toString();
                        zA=rsA.getString(id).toString();
                        zB=rsB.getString(id).toString();
                        zC=rsC.getString(id).toString();
                        isSuccess = true;
                    } 
                      else {
                        z = "Invalid Credentials";
                        isSuccess = false;
                    }
                }
            } catch (Exception ex) {
                isSuccess = false;
                z = "Exceptions";
            }
           return z;
        }

    }
}
package com.example.android.quick\u app\u android模块;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.os.AsyncTask;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.sql.Connection;
导入java.sql.ResultSet;
导入java.sql.Statement;
公共类MainActivity扩展了AppCompatActivity{
连接类连接类;
文本查看问题、分数;
按钮btnlogin、btnA、btnB、btnC、btnStart;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
connectionClass=新的connectionClass();
btnlogin=(按钮)findViewById(R.id.btnStart);
btnA=(按钮)findViewById(R.id.button1);
btnB=(按钮)findViewById(R.id.button2);
btnC=(按钮)findViewById(R.id.button3);
问题=(TextView)findViewById(R.id.textViewQuestion);
分数=(TextView)findViewById(R.id.textViewScore);
btnlogin.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
多洛金多洛金=新多洛金();
doLogin.execute(“”);
btnA.setVisibility(View.VISIBLE);
btnB.setVisibility(View.VISIBLE);
btnC.setVisibility(View.VISIBLE);
问题.setVisibility(View.VISIBLE);
Score.setVisibility(View.VISIBLE);
btnlogin.setVisibility(View.GONE);
}
});
}
字符串z=“”;
字符串zA=“”;
字符串zB=“”;
字符串zC=“”;
int-id=1;
积分;
公共类DoLogin扩展异步任务{
布尔值isSuccess=false;
@凌驾
受保护的void onPostExecute(字符串r){
如果(isSuccess){
问题.setText(z);
btnA.setText(zA);
btnB.setText(zB);
btnC.setText(zC);
}
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
试一试{
Connection con=connectionClass.CONN();
如果(con==null){
z=“与SQL server连接时出错”;
}否则{
String query=“从quizID>=“0”的问题中选择问题;
语句stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(查询);
String queryA=“从quizID>=“0”的选项中选择optionOne;
语句stmtA=con.createStatement();
结果集rsA=stmtA.executeQuery(queryA);
String queryB=“从quizID>=“0”的选项中选择optionTwo;
语句stmtB=con.createStatement();
ResultSet rsB=stmtB.executeQuery(queryB);
String queryC=“从quizID>=“0”的选项中选择选项树;
语句stmtC=con.createStatement();
结果集rsC=stmtC.executeQuery(queryC);
if(rs.next()| rsA.next()| rsB.next()| rsC.next()){
z=rs.getString(id).toString();
zA=rsA.getString(id.toString();
zB=rsB.getString(id).toString();
zC=rsC.getString(id).toString();
isSuccess=true;
} 
否则{
z=“无效凭证”;
isSuccess=false;
}
}
}捕获(例外情况除外){
isSuccess=false;
z=“例外”;
}
返回z;
}
}
}
我试图使用简单的代码,尽可能地访问数据

如果有人需要更多信息,请告诉我

我的逻辑是: 我将更新'id'变量并再次执行该方法,它将使用新值更新视图

顺便说一下,我用按钮来显示选项。 数据库位于MS SQL Server中。
请指导。

您应该在初始化视图之前添加第一个AsyncTask调用,然后在每个下一步按钮上单击,您应该将id增加1

package com.example.android.quiz_app_androidmodule;

import android.support.v7.app.AppCompatActivity;import android.os.Bundle;
import android.os.AsyncTask;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;



public class MainActivity extends AppCompatActivity {
ConnectionClass connectionClass;
TextView Question, Score;
Button btnlogin, btnA, btnB, btnC, btnStart;

DoLogin doLogin ;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    connectionClass = new ConnectionClass();

    btnlogin = (Button) findViewById(R.id.btnStart);

    btnA = (Button) findViewById(R.id.button1);
    btnB = (Button) findViewById(R.id.button2);
    btnC = (Button) findViewById(R.id.button3);
    Question = (TextView) findViewById(R.id.textViewQuestion);
    Score = (TextView) findViewById(R.id.textViewScore);

    doLogin.execute(id);

    btnlogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        //Make sure your first id is 1;
            id = id+1;
            dologin = = new DoLogin()
            doLogin.execute(id);

            btnA.setVisibility(View.VISIBLE);
            btnB.setVisibility(View.VISIBLE);
            btnC.setVisibility(View.VISIBLE);
            Question.setVisibility(View.VISIBLE);
            Score.setVisibility(View.VISIBLE);
            btnlogin.setVisibility(View.GONE);


        }
    });


}






String z = "";
String zA = "";
String zB="";
String zC="";
int id = 0;
int points;

public class DoLogin extends AsyncTask<String, String, String> {

    Boolean isSuccess = false;


    @Override
    protected void onPostExecute(String r) {


        if (isSuccess) {
          Question.setText(z);
            btnA.setText(zA);
            btnB.setText(zB);
            btnC.setText(zC);
        }

    }

    @Override
    protected String doInBackground(String... params) {

    String id = params[0];

        try {
            Connection con = connectionClass.CONN();
            if (con == null) {
                z = "Error in connection with SQL server";
            } else {
                String query = "select question from Question where quizID >= "+id;
                Statement stmt = con.createStatement();
                ResultSet rs = stmt.executeQuery(query);

                String queryA = "select optionOne from Options where quizID >= "+id;
                Statement stmtA = con.createStatement();
                ResultSet rsA = stmtA.executeQuery(queryA);

                String queryB = "select optionTwo from Options where quizID >= "+id;
                Statement stmtB = con.createStatement();
                ResultSet rsB = stmtB.executeQuery(queryB);


                String queryC = "select optionThree from Options where quizID >= "+id;
                Statement stmtC = con.createStatement();
                ResultSet rsC = stmtC.executeQuery(queryC);
                if (rs.next() | rsA.next() | rsB.next() | rsC.next()) {
                    z = rs.getString(id).toString();
                    zA=rsA.getString(id).toString();
                    zB=rsB.getString(id).toString();
                    zC=rsC.getString(id).toString();
                    isSuccess = true;
                } 
                  else {
                    z = "Invalid Credentials";
                    isSuccess = false;
                }
            }
        } catch (Exception ex) {
            isSuccess = false;
            z = "Exceptions";
        }
       return z;
    }

}
}
package com.example.android.quick\u app\u android模块;
导入android.support.v7.app.AppActivity;导入android.os.Bundle;
导入android.os.AsyncTask;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.sql.Connection;
导入java.sql.ResultSet;
导入java.sql.Statement;
公共类MainActivity扩展了AppCompatActivity{
连接类连接类;
文本查看问题、分数;
按钮btnlogin、btnA、btnB、btnC、btnStart;
多洛金多洛金;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanc