我不理解这些代码

时间:2018-03-01 21:11:57

标签: android stringbuffer

我正在为我在学校的最终项目制作一个Android应用程序。 我只知道基本的Java,我需要让我的应用程序连接到我的mysql数据库。

所以我在这里使用了get方法:

https://www.tutorialspoint.com/android/android_php_mysql.htm

除了php部分以及它如何连接和执行代码,我不明白这一行

StringBuffer sb = new StringBuffer("");
String line="";

while ((line = in.readLine()) != null) {
    sb.append(line);
    break;
}

in.close();
return sb.toString();

我试着读这个:

https://developer.android.com/reference/java/lang/StringBuffer.html

但我吮吸英语并阅读,这不会让我明白StringBuffer做了些什么。我只知道它会返回一些内容并将其转换为字符串类型,因此我认为这是php结果。

我想知道的是StringBuffer在上面的教程中做了什么?就像他们返回php结果的值一样吗?

如果他们这样做我可以像这样使用它吗?因为我试图这样做,但得到一个捕获(异常e),e.getMessage为null

TextView text2 = (TextView) findViewById(R.id.textView);
text2.setText(sb.toString());

如果他们不这样做,我如何将php值的结果设置为我的textview?

2 个答案:

答案 0 :(得分:0)

StringBuffer是一种逐段构建String的方法。它是手动连接字符串的替代方法,如下所示:

String string3 = string0 + string1 + string2;

你会这样做。

stringBuffer.append(string0)
    .append(string1)
    .append(string2);

因此,它所做的只是逐行 中的字符串并将其组合成一个字符串。

答案 1 :(得分:0)

好伙伴,这取决于你期望你可以连接到数据库的结果,例如发送或获取一些数据,然后你还需要一个php文件。 但是连接到db的最简单方法是使用VolleyAsyncTask。 分析这些示例代码,它完全正常工作(但您需要一个与您的请求相关联的php文件:

private class YourTask extends AsyncTask<Void, Void, String> {

    @Override
    protected String doInBackground(Void... voids) {
        String strUrl = "http://YOUR_PLACE_ON_A_SERVER_WHERE_THE_PHP_FILE_IS.php";
        URL url = null;
        StringBuffer sb = new StringBuffer();

        try {
            url = new URL(strUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.connect();
            InputStream iStream = connection.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(iStream));
            String line = "";

            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }

            reader.close();
            iStream.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return sb.toString();
    }
//Here you can manage things you want to execute
}