2017-06-29 67 views
1

你好我是初學者android.I想要在我的電腦上建立一個數據庫連接到mssql服務器。我在網上找到了一個例子。 我想我的連接有問題。因爲我的用戶表中有兩條記錄。但是這個代碼只給了我第一個表中的記錄。Android數據庫選擇查詢 - 不顯示所有記錄

這裏是ConnectionClass.java:

import android.annotation.SuppressLint; 
import android.os.StrictMode; 
import android.util.Log; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
public class ConnectionClass { 
String ip = "127.0.0.1:1433"; 
String classs = "net.sourceforge.jtds.jdbc.Driver"; 
String db = "DBAndroid1"; 
String un = "TestUser"; 
String password = "123"; 
@SuppressLint("NewApi") 
public Connection CONN() { 
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
      .permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 
    Connection conn = null; 
    String ConnURL = null; 
    try { 

     Class.forName(classs).newInstance(); 
     ConnURL = "jdbc:jtds:sqlserver://" + ip + ";" 
       + "databaseName=" + db + ";user=" + un + ";password=" 
       + password + ";"; 
     conn = DriverManager.getConnection(ConnURL); 
    } catch (SQLException se) { 
     Log.e("ERRO0", se.getMessage()); 
    } catch (ClassNotFoundException e) { 
     Log.e("ERRO1", e.getMessage()); 
    } catch (Exception e) { 
     Log.e("ERRO2", e.getMessage()); 
    } 
    return conn; 
} 
} 

這是我MainActivity.java。

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ProgressBar; 
import android.widget.Toast; 
import java.sql.Connection; 
import java.sql.ResultSet; 
import java.sql.Statement; 
import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity { 

ConnectionClass connectionClass; 
EditText edtuserid, edtpass; 
Button btnlogin; 
ProgressBar pbbar; 

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

    connectionClass = new ConnectionClass(); 
    edtuserid = (EditText) findViewById(R.id.et_username); 
    edtpass = (EditText) findViewById(R.id.et_password); 
    btnlogin = (Button) findViewById(R.id.btn_Login); 
    pbbar = (ProgressBar) findViewById(R.id.pbbar); 
    pbbar.setVisibility(View.GONE); 

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

     } 
    }); 

} 


public class DoLogin extends AsyncTask<String,String,String> 
{ 
    String z = ""; 
    Boolean isSuccess = false; 

    String userid = edtuserid.getText().toString(); 
    String password = edtpass.getText().toString(); 


    @Override 
    protected void onPreExecute() { 
     pbbar.setVisibility(View.VISIBLE); 
    } 

    @Override 
    protected void onPostExecute(String r) { 
     pbbar.setVisibility(View.GONE); 
     Toast.makeText(MainActivity.this,r,Toast.LENGTH_SHORT).show(); 

     if(isSuccess) { 
      Toast.makeText(MainActivity.this,r,Toast.LENGTH_SHORT).show(); 
     } 

    } 

    @Override 
    protected String doInBackground(String... params) { 
     if(userid.trim().equals("")|| password.trim().equals("")) 
      z = "Please enter User Id and Password"; 
     else 
     { 
      try { 
       Connection con = connectionClass.CONN(); 
       if (con == null) { 
        z = "Error in connection with SQL server"; 
       } else { 
        String query = "select Username from [User]"; 
        Statement stmt = con.createStatement(); 
        ResultSet rs = stmt.executeQuery(query); 
        int columnCount = rs.getMetaData().getColumnCount(); 

        System.out.println("Eleman sayisi: "+ columnCount); 
        if(rs.next()) 
        { 
         String lastName = rs.getString("Username"); 
         z = "Login successfull"; 
         z = z + " " + lastName; 
         isSuccess=true; 
        } 
        else 
        { 
         z = "Invalid Credentials"; 
         isSuccess = false; 
        } 

       } 
      } 
      catch (Exception ex) 
      { 
       isSuccess = false; 
       z = "Exceptions burda mi "+ ex; 
      } 
     } 
     return z; 
    } 
} 
} 

我希望你能幫忙。謝謝。

回答

1

表中有兩條記錄,但是您使用if(rs.next())來獲取只返回單條記錄的記錄。 用於循環或while循環來獲取所有記錄並迭代循環中的結果集。

+0

是的你是對的,但以任何方式列數給我一個。 –