从android中的sql server下载表行时显示进度条

时间:2017-01-07 08:07:22

标签: android sql-server android-asynctask progressdialog android-progressbar

  

我从android中的sql server获取表行,我想在进度条中显示但是我遇到问题。我正在使用SQL Connection类,它不允许占用表row.my连接类的长度。< / p>

String ip="192.168.43.85";
String classs="net.sourceforge.jtds.jdbc.Driver";            
String db="mydatabasename";
String uname="myname";                                                 
String pass="pass";

@SuppressLint("New Api")
public Connection CON() throws IOException{

    StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
    Connection connection=null;
    String ConUrl=null;

    try {

        Class.forName(classs);
        ConUrl="jdbc:jtds:sqlserver://"+ip+";"
                + "databaseName="+db+";user="+uname+";password="
                +pass+";";
        connection= DriverManager.getConnection(ConUrl);


    } catch (ClassNotFoundException e) {
        Log.e("ERRO",e.getMessage());

    } catch (SQLException e) {
        Log.e("ERROR",e.getMessage());
    } catch (Exception e) {
        Log.e("ERROr", e.getMessage());
    }

    return connection;
}

我尝试了谷歌的一些例子,但所有的例子都使用了http和网址,但我没有网址来查找长度。

    Connection conn = null;
    try {
        conn = connectionClass.CON();
    } catch (IOException e) {
        e.printStackTrace();
    }
    if (conn == null) {

        Toast.makeText(getApplicationContext(), "Error in Connection with server.Make sure your internet connection is ON", Toast.LENGTH_SHORT).show();
    } else {

        Statement stmt = null;

        try {
            //String Slqquery = "select * from Zmat";
            String Slqquery1 = "select GlobalSummaryReportFlag,StudyID,StoreCode,StudyDesc from GlobalCountSummaryReport where GlobalSummaryReportFlag='1' and StudyId='" + strStudyId1 + "' and StoreCode='" + strStudyCode2 + "' and StudyDesc='" + strStudyDes3 + "'";

            stmt = conn.createStatement();
            ResultSet rs3;
            rs3 = stmt.executeQuery(Slqquery1);
            if (rs3.next()) {

                progress1=new ProgressDialog(MenuActivity.this);
                progress1.setMessage("Downloading GC");
                progress1.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                progress1.setIndeterminate(true);
                progress1.setProgress(0);
                progress1.setMax(100);
                progress1.show();
        final int totalProgressTime = 100;
        new Thread(new Runnable() {
            @Override
            public void run() {
                int jumpTime = 0;

                while(jumpTime < totalProgressTime) {
                    try {
                        Data();
                        if (countForHireMapping == 0 || CountForArticle == 0) {
                            Toast.makeText(getApplicationContext(), "Downloaded UnSuccessfully Please Retry", Toast.LENGTH_SHORT).show();
                            delete2();
                            progress1.dismiss();
                        } else {

                            sleep(200);
                            jumpTime += 5;
                            progress1.setProgress(jumpTime);
                            progress1.dismiss();
                            Intent intent = new Intent(MenuActivity.this, LocationActivity.class);
                            startActivity(intent);
                            Toast.makeText(getApplicationContext(), "Downloaded Successfully", Toast.LENGTH_SHORT).show();
                        }

                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        }).start();

            } else {
                Toast.makeText(getApplicationContext(), "Gc Not Completed", Toast.LENGTH_SHORT).show();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }`

1 个答案:

答案 0 :(得分:0)

您应该在MainActvity中使用AsyncTask

它包含3种方法:

  1. onPreExecute():在此方法中放置执行类之前要执行的任何操作。(在您的情况下为progressBar)

  2. doInBackground():在此方法中放置您希望应用在后台执行的任何操作。(示例:从服务器获取数据)

  3. onPostExecute():在此方法中,在完成后台处理后放置您要执行的任何操作。 (示例:根据从在线服务器接收的数据设置视图)

  4. Here is a tutorial让你加速AsyncTask。

    快乐的编码。