Java Android AsyncTask + MySQL соединение

У меня проблема, я пытаюсь подключиться к базе данных MySQL, используяAsyncTask, Я вставил код подключения в событие кнопки, но это дает мне ошибку,

Вот код: я

    package com.example.mysqlconnect;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;





import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

  private static final String url = "jdbc:mysql://cool/app";
  private static final String user = "user";
  private static final String pass = "password";

/** Called when the activity is first created. */

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


        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Button button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Perform action on click
                Connect();
            }
        });
    }

  TextView tv = (TextView)this.findViewById(R.id.textView1);
  private class Connect extends AsyncTask {
    @Override
    protected String doInBackground(String... urls) {
      String response = "";

      try {
          Class.forName("com.mysql.jdbc.Driver");
          Connection con = DriverManager.getConnection(url, user, pass);
          // System.out.println("Database connection success"); 

          String result = "Database connection success\n";
          Statement st = con.createStatement();
          ResultSet rs = st.executeQuery("select * from users");
          ResultSetMetaData rsmd = rs.getMetaData();

          while(rs.next()) {
            result += rsmd.getColumnName(1) + ": " + rs.getInt(1) + "\n";
            result += rsmd.getColumnName(2) + ": " + rs.getString(2) + "\n";
            result += rsmd.getColumnName(3) + ": " + rs.getString(3) + "\n";
          }
          tv.setText(result);
      }
      catch(Exception e) {
          e.printStackTrace();
          tv.setText(e.toString());
      }
    return response;   


    }

    @Override
    protected void onPostExecute(String result) {
        tv.setText(result);
    }
  }

  public void Connect() {
    Connect task = new Connect();
      task.execute();

    }
} 

Я новичок в AsyncTask, может кто-нибудь помочь мне найти ошибки?

Вот's logcat:

    10-23 19:08:41.168: W/dalvikvm(1514): threadid=1: thread exiting with uncaught exception (group=0xb40ca180)
10-23 19:08:41.178: E/AndroidRuntime(1514): FATAL EXCEPTION: main
10-23 19:08:41.178: E/AndroidRuntime(1514): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.mysqlconnect/com.example.mysqlconnect.MainActivity}: java.lang.NullPointerException
10-23 19:08:41.178: E/AndroidRuntime(1514):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
10-23 19:08:41.178: E/AndroidRuntime(1514):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
10-23 19:08:41.178: E/AndroidRuntime(1514):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
10-23 19:08:41.178: E/AndroidRuntime(1514):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
10-23 19:08:41.178: E/AndroidRuntime(1514):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-23 19:08:41.178: E/AndroidRuntime(1514):     at android.os.Looper.loop(Looper.java:137)
10-23 19:08:41.178: E/AndroidRuntime(1514):     at android.app.ActivityThread.main(ActivityThread.java:4424)
10-23 19:08:41.178: E/AndroidRuntime(1514):     at java.lang.reflect.Method.invokeNative(Native Method)
10-23 19:08:41.178: E/AndroidRuntime(1514):     at java.lang.reflect.Method.invoke(Method.java:511)
10-23 19:08:41.178: E/AndroidRuntime(1514):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-23 19:08:41.178: E/AndroidRuntime(1514):     at dalvik.system.NativeStart.main(Native Method)
10-23 19:08:41.178: E/AndroidRuntime(1514): Caused by: java.lang.NullPointerException
10-23 19:08:41.178: E/AndroidRuntime(1514):     at android.app.Activity.findViewById(Activity.java:1794)
10-23 19:08:41.178: E/AndroidRuntime(1514):     at com.example.mysqlconnect.MainActivity.(MainActivity.java:51)
10-23 19:08:41.178: E/AndroidRuntime(1514):     at java.lang.Class.newInstanceImpl(Native Method)
10-23 19:08:41.178: E/AndroidRuntime(1514):     at java.lang.Class.newInstance(Class.java:1319)
10-23 19:08:41.178: E/AndroidRuntime(1514):     at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
10-23 19:08:41.178: E/AndroidRuntime(1514):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)

Я удалил второй при создании, и теперь я получаю эту ошибку в logcat:

10-23 19:10:29.129: E/AndroidRuntime(1565): FATAL EXCEPTION: main
10-23 19:10:29.129: E/AndroidRuntime(1565): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.mysqlconnect/com.example.mysqlconnect.MainActivity}: java.lang.NullPointerException
 Carnal23 окт. 2012 г., 21:29
разместить логкат
 kosa23 окт. 2012 г., 21:26
Какую ошибку вы получаете?
 kosa23 окт. 2012 г., 21:33
Почему есть два super.onCreate (), удалите второй super. и установить содержание ..
 user166716223 окт. 2012 г., 21:29
это сбой после старта ...
 user166716223 окт. 2012 г., 21:31
Готово, ямы добавили логкат ...
 Carnal23 окт. 2012 г., 21:37
Посмотри на мой ответ, твойТВ" нулевой. И это потому, что вы инициируете это снаружи onCreate. Вы можете объявить его только снаружи и инициировать внутри onCreate.

Ответы на вопрос(1)

Решение Вопроса

TextView tv = (TextView)this.findViewById(R.id.textView1); потому что это объявлено за пределами.onCreate

Так что это то, что вы должны сделать, объявитьTextView tv; вышеonCreate, Тогда внутриonCreate вы добавляетеtv = (TextView) findViewById(R.id.textView1);

И удалите дубликат:

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 Carnal24 окт. 2012 г., 09:18
Да, это нормально!
 user166716223 окт. 2012 г., 22:13
Можете ли вы помочь мне сделать это?
 Carnal23 окт. 2012 г., 22:03
Я думаю, что вам нужно реализовать onPreExecute в AsyncTask.
 user166716224 окт. 2012 г., 08:22
У меня нетпока не решено, я нене знаю, что делать ...
 user166716224 окт. 2012 г., 09:15
Надеюсь, что да, я добавил Предисполнение выше Do do inbackgroud, это нормально?
 user166716223 окт. 2012 г., 22:29
Я добавил защищенный void onPreExecute () {super.onPreExecute (); tv.setText (»подключения»); Log.d (»сообщение","предварительно выполнить "); } но это нет, и logcat не показывает ничего ...
 Carnal24 окт. 2012 г., 08:24
Ты точно следовал ссылке, которую я тебе дал?
 Carnal24 окт. 2012 г., 11:30
и измените имя вашего метода Connect () на connect (). Ничего общего с этим, но это может сбить с толку, если у вас одно и то же имя для AsyncTask.
 user166716223 окт. 2012 г., 21:43
Хорошо, теперь с этим это работает ... но у меня есть еще одна проблема, почему, когда я нажимаю кнопку, асинктическая задача нене начать?
 user166716224 окт. 2012 г., 09:34
И почему нет работаешь? :(
 user166716223 окт. 2012 г., 22:00
В журнале сообщается, что при нажатии кнопки вызова public void Connect () {Connect task = new Connect (); task.execute (); Log.d (»Connect ""первый" ); } Но это блокирует здесь, и это не будет запускать фоновый процесс ...
 Carnal23 окт. 2012 г., 22:19
 Carnal23 окт. 2012 г., 21:53
Log.d (»yourTag ","текст"); а затем проверьте в Logcat для вашего конкретного тега, что он говорит. Поместите разные тексты в каждый из них, чтобы вы знали, где вы находитесь.
 Carnal23 окт. 2012 г., 22:43
Очень странный приятель: S это должно работать. Я'сейчас я иду спать, напишите здесь, если вы найдете что-нибудь еще, и яЯ отвечу тебе завтра. Удачи
 Carnal24 окт. 2012 г., 11:29
Дон»Не знаю, мне кажется, что код в порядке. Но, возможно, что-то еще, что вы делаете неправильно, попробуйте добавить супер на эти методы.
 user166716223 окт. 2012 г., 21:50
Как я могу это сделать?
 Carnal23 окт. 2012 г., 21:48
Вы зарегистрировались? Поместите журнал в ваш метод "Connect () ","doInBackground ()» а также "onPostExecute» и скажите мне, что это входит.

Ваш ответ на вопрос