我的问题是我无法将表中的所有行获取到我的 Android 应用程序,我的表位于 MS sql 数据库中,当我尝试获取它们时,我想将所有列放入 TextView 中,但它只获取第一个我的表格中的行有帮助吗?
这是我的代码:
public class words extends AppCompatActivity {
private Button a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,rr,s,t,u,v,w,x,y,z,z1,z2;
ConnectionClass connectionClass;
ProgressBar loading;
private TextView view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_words);
getSupportActionBar().hide();
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
a = (Button) findViewById(R.id.أ);
b = (Button) findViewById(R.id.ب);
c = (Button) findViewById(R.id.ت);
d = (Button) findViewById(R.id.ث);
e = (Button) findViewById(R.id.button3);
f = (Button) findViewById(R.id.button13);
g = (Button) findViewById(R.id.button17);
h = (Button) findViewById(R.id.button6);
i = (Button) findViewById(R.id.button8);
j = (Button) findViewById(R.id.button18);
k = (Button) findViewById(R.id.button19);
l = (Button) findViewById(R.id.button21);
m = (Button) findViewById(R.id.button26);
n = (Button) findViewById(R.id.button22);
o = (Button) findViewById(R.id.button23);
p = (Button) findViewById(R.id.button24);
q = (Button) findViewById(R.id.button20);
rr = (Button) findViewById(R.id.button27);
s = (Button) findViewById(R.id.button29);
t = (Button) findViewById(R.id.button28);
u = (Button) findViewById(R.id.button31);
v = (Button) findViewById(R.id.button30);
w = (Button) findViewById(R.id.button32);
x = (Button) findViewById(R.id.button33);
y = (Button) findViewById(R.id.button34);
z = (Button) findViewById(R.id.button35);
z1 = (Button) findViewById(R.id.button36);
z2 = (Button) findViewById(R.id.button37);
loading = (ProgressBar) findViewById(R.id.progressBar);
connectionClass = new ConnectionClass();
view = (TextView) findViewById(R.id.word);
DoLogin doLogin = new DoLogin(); // this is the Asynctask
doLogin.execute("");
}
public class DoLogin extends AsyncTask<String,String,String>
{
String message = "";
Boolean isSuccess = false;
@Override
protected void onPreExecute() {
loading.setVisibility(View.VISIBLE);
}
@Override
protected void onPostExecute(String r) {
loading.setVisibility(View.GONE);
Toast.makeText(words.this, r, Toast.LENGTH_SHORT).show();
if(isSuccess) {
Toast.makeText(words.this, r, Toast.LENGTH_SHORT).show();
}
}
@Override
protected String doInBackground(String... params) {
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
Connection con = connectionClass.CONN();
if (con == null) {
message = "Error in connection with SQL server please contact the administrator";
} else {
String query = "SELECT * FROM country INNER JOIN family ON country.CID = family.CID";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
if(rs.next())
{
try {
String theword = (rs.getString("FName"));
if (theword.contains("أ")){
a.setVisibility(View.VISIBLE);
}else if (theword.contains("ب")){
b.setVisibility(View.VISIBLE);
}else if (theword.contains("ت")){
c.setVisibility(View.VISIBLE);
}else if (theword.contains("ث")){
d.setVisibility(View.VISIBLE);
}else if (theword.contains("ج")){
e.setVisibility(View.VISIBLE);
} else if (theword.contains("ح")){
f.setVisibility(View.VISIBLE);
}else if (theword.contains("خ")){
g.setVisibility(View.VISIBLE);
}else if (theword.contains("د")){
h.setVisibility(View.VISIBLE);
}else if (theword.contains("ذ")){
i.setVisibility(View.VISIBLE);
}else if (theword.contains("ر")){
j.setVisibility(View.VISIBLE);
}else if (theword.contains("ز")){
k.setVisibility(View.VISIBLE);
}else if (theword.contains("س")){
l.setVisibility(View.VISIBLE);
}else if (theword.contains("ش")){
m.setVisibility(View.VISIBLE);
}else if (theword.contains("ص")){
n.setVisibility(View.VISIBLE);
}else if (theword.contains("ض")){
o.setVisibility(View.VISIBLE);
}else if (theword.contains("ط")){
p.setVisibility(View.VISIBLE);
}else if (theword.contains("ظ")){
q.setVisibility(View.VISIBLE);
}else if (theword.contains("ع")){
rr.setVisibility(View.VISIBLE);
}else if (theword.contains("غ")){
s.setVisibility(View.VISIBLE);
}else if (theword.contains("ف")){
t.setVisibility(View.VISIBLE);
}else if (theword.contains("ق")){
u.setVisibility(View.VISIBLE);
}else if (theword.contains("ك")){
v.setVisibility(View.VISIBLE);
}else if (theword.contains("ل")){
w.setVisibility(View.VISIBLE);
}else if (theword.contains("م")){
x.setVisibility(View.VISIBLE);
}else if (theword.contains("ن")){
y.setVisibility(View.VISIBLE);
}else if (theword.contains("ه")){
z.setVisibility(View.VISIBLE);
}else if (theword.contains("و")){
z1.setVisibility(View.VISIBLE);
}else if (theword.contains("ي")){
z2.setVisibility(View.VISIBLE);
}else {
message ="WERE IS THE FWORD COLUMN?!?!";
}
isSuccess=true;
}catch (Exception e){
message = "Exception e = "+e;
isSuccess = false;
}
}
}
}
catch (Exception ex)
{
isSuccess = false;
message = "Exceptions"+ex;
}
}
});
return message;
}
}
}
使用此代码,它总是在我的 TextView 中只显示一行
有什么帮助吗?!
编辑:
查询成功返回所有行,但在应用程序中没有执行相同的操作
已解决
我用 while(rs.next()) 替换了 if(rs.next()) ,它解决了我的问题!
最佳答案
首先确保您的查询返回超过 1 行,然后使用任何工具执行它,
SELECT column_name
FROM country
INNER JOIN family
ON country.CID = family.CID
如果不是,则问题出在您的 INNER JOIN
上,并将其更改为 LEFT JOIN
以在这种情况下甚至返回空值。
直接选择column_name
以避免检索您未使用的所有列。
关于java - 如何将表中的所有行获取到 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57366853/