我从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();
}
}`
答案 0 :(得分:0)
您应该在MainActvity中使用AsyncTask
它包含3种方法:
onPreExecute():在此方法中放置执行类之前要执行的任何操作。(在您的情况下为progressBar)
doInBackground():在此方法中放置您希望应用在后台执行的任何操作。(示例:从服务器获取数据)
onPostExecute():在此方法中,在完成后台处理后放置您要执行的任何操作。 (示例:根据从在线服务器接收的数据设置视图)
Here is a tutorial让你加速AsyncTask。
快乐的编码。