2017-10-13 6 views
-1

私たちのアプリはSQLデータベースに接続する必要があります。私たちのネットワークにあります。アプリケーションはデータベース内のデータを編集する必要があります。私たちは接続を構築し、ボタンにonclicklistenerを設定したい場合、接続コードが接続されます。この種のコードにOnClickListenerを追加する方法

これは我々が持っているコードです:

public class Werte_aendern extends AppCompatActivity { 

TextView tvIP; 

String Textauslesen = tvIP.getText().toString(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    tvIP = (TextView) findViewById(R.id.tvIP); 
    setContentView(R.layout.activity_werte_aendern); 
} 




    Connection con = null; 
    //private static String dbHost = "192.168.40.148"; // Hostname 
    String dbPort = "3306";  // Port -- Standard: 3306 
    String dbName = "wasserwerte"; // Datenbankname 
    String dbUser = "App";  // Datenbankuser 
    String dbPass = "fruitcake";  // Datenbankpasswort 

    private Werte_aendern(){ 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); // Datenbanktreiber für JDBC Schnittstellen laden. 

      // Verbindung zur JDBC-Datenbank herstellen. 
      con = DriverManager.getConnection("jdbc:mysql://"+Textauslesen+":"+ dbPort+"/"+dbName+"?"+"user="+dbUser+"&"+"password="+dbPass); 
      // Statement createStatement(); 
      // SQLiteDatabase wasserwerte = 

     } catch (ClassNotFoundException e) { 
      Toast.makeText(getApplicationContext(), "Treiber nicht gefunden", Toast.LENGTH_SHORT).show(); 
     } catch (SQLException e) { 
      Toast.makeText(getApplicationContext(), "Verbindung nicht möglich", Toast.LENGTH_SHORT).show(); 
      Toast.makeText(getApplicationContext(), "SQLException: " + e.getMessage(), Toast.LENGTH_SHORT).show(); 
      Toast.makeText(getApplicationContext(), "SQLState: " + e.getSQLState(), Toast.LENGTH_SHORT).show(); 
      Toast.makeText(getApplicationContext(), "VendorError: " + e.getErrorCode(), Toast.LENGTH_SHORT).show(); 
     } 
    } 

} 

我々は初心者ですが、我々はschoolprojectのためにこれをしなければなりません。
お願いします。

+0

コードにボタンはありませんので、リスナーを追加することはできません。作成方法はわかりますか? ボタン(javaコードまたはxml)を宣言する場所を教えてください – deHaar

+0

@deHaar必要はありません。レイアウトでは、クリックイベントハンドラを参照できます。しかし、それはまた、示されたコードには存在しません。 –

+0

あなたは正しいですが、問題はOnClickListenerについて明示的に質問されていましたので、コード内にあるべきだと思いました.- メソッドを記述してxml onClickに入れることができます。 – deHaar

答えて

1

コードを更新しました。アクティビティの名前は常に[何でも]アクティビティにする必要があります。私がドイツ語を話せないので、 "WerteAendern"が正しい名前であればドンノット(私はそれがドイツ語だと仮定します)。

public class WerteAendernActivity extends AppCompatActivity { 

    TextView tvIP; 

    // You should get the text from the View AFTER inflating the layout and find it with 
    // findViewById. Otherwise it's gonna crash. 
    String textauslesen; 
    private Button connectBtn; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // First you inflate the layout 
     setContentView(R.layout.activity_werte_aendern); 
     // Then you get the views 
     tvIP = (TextView) findViewById(R.id.tvIP); 
     // Probably should be somewhere else as there is no interesting text to retrieve from the 
     // view at the moment 
     textauslesen = tvIP.getText().toString(); 

     connectBtn = (Button) findViewById(R.id.connection_button); // ! You need to add a Button in your layout 
     connectBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       // Add some test, ... if you're already connected 
       connectToDataBase(); 
      } 
     }); 
    } 

    Connection con = null; 
    //private static String dbHost = "192.168.40.148"; // Hostname 
    String dbPort = "3306";  // Port -- Standard: 3306 
    String dbName = "wasserwerte"; // Datenbankname 
    String dbUser = "App";  // Datenbankuser 
    String dbPass = "fruitcake";  // Datenbankpasswort 


    // Method to connect to the database. 
    // !!! You're not supposed to override the constructor of an Activity! 
    private void connectToDataBase() { 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); // Datenbanktreiber für JDBC Schnittstellen laden. 

      // Verbindung zur JDBC-Datenbank herstellen. 
      con = DriverManager.getConnection("jdbc:mysql://" + textauslesen + ":" + dbPort + "/" + dbName + "?" + "user=" + dbUser + "&" + "password=" + dbPass); 
      // Statement createStatement(); 
      // SQLiteDatabase wasserwerte = 

     } catch (ClassNotFoundException e) { 
      Toast.makeText(getApplicationContext(), "Treiber nicht gefunden", Toast.LENGTH_SHORT).show(); 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      Toast.makeText(getApplicationContext(), "Error! See Exception logs", Toast.LENGTH_SHORT).show(); 
      // The logs will be displayed in the Logcat window in Android Studio 
      e.printStackTrace(); 
     } 
    } 
} 
+1

あなたは確かにAndroidの初心者のようです。私はいくつかのチュートリアルに従うことをお勧めします。アクティビティを開始し、レイアウトを膨らませ、ビューを取得し、それらと対話して最初のステップにする必要があります。あなたは歩くことを学ぶ前に走ることはできません! – Eselfar

+0

ありがとうございます。あなたは私たちをたくさん助けました。しかし、私たちのアプリケーションは、あなたがコードを見た活動(WerteAendernActivity)に関連するメインアクティビティのボタンをクリックするとクラッシュし続けます。この問題の原因は何でしょうか? –

+0

「上記アクティビティに該当する主なアクティビティ」とは何を意味しますか?あなたのボタンが上記のアクティビティのレイアウトにあり、別のレイアウトの別のボタンからボタンにアクセスしようとすると、はい、クラッシュします。しかし、少なくとも私たちが問題のアイデアを得るためのエラーログを入れてください。 – Eselfar

関連する問題