2016-03-26 11 views
1

私はレストラン用のアプリを作ろうとしています。私は、ローカルデータベースをセットアップし、システムにログインできるようにユーザのユーザ名とパスワードを保存するための準備文を持っていますが、動作していないようです。ユーザー名とパスワードは保存されません。以下は私のコードですが、誰かが解決策を持っているなら、私はそれを高く評価します。データベースに値を保存する

public class register extends AppCompatActivity { 

EditText username, password; 
Button registartion; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_register); 
} 

private Connection getConnection() 
{ 

    String host = "jdbc:mysql://jdbc.fmc.me.uk:3306/db_ben"; 
    String u = "user_ben"; 
    String p = "******"; 
    try 
    { 
     Connection con = DriverManager.getConnection(host, u, p); 
     return con; 
    } catch (SQLException e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return null; 
} 

private boolean registerUser(){ 

    //Get username 
    EditText regUsernameBox = (EditText) findViewById(R.id.RegUsername); 
    String regUsernameStr = regUsernameBox.getText().toString(); 

    //Get password 
    EditText regPasswordBox = (EditText) findViewById(R.id.RegPassword); 
    String regPasswordStr = regPasswordBox.getText().toString(); 

    System.out.println(regUsernameStr); 
    System.out.println(regPasswordStr); 

    int i = 0; 
    Connection con = getConnection(); 
    try { 
     PreparedStatement pst = con.prepareStatement("insert into users values(?,?)"); 
     pst.setString(1, regUsernameStr); 
     pst.setString(2,regPasswordStr); 
     i = pst.executeUpdate(); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    if(i>0) 
     return true; 
    return false; 
} 

public void buttonClick() { 
    final Button registerUsers = (Button) findViewById(R.id.bRegister); 

    registerUsers.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      registerUser(); 
     } 
    }); 
} 
} 
+0

デバッグにあなたの調査結果の詳細を言って何を得るのエラーで、あなたの記事を更新。 –

+0

エラーはありません。コードはデータをデータベースに保存しませんでした。 – Bjohnston

答えて

1

どのメソッドも呼び出されていません。 oncreateはアクティビティのビューを設定し、何もしません。したがって、技術的には何もないので、エラーは発生しません。作成中のボタンのボタンクリックの指示を設定する必要があります。あなたのonCreateは次のようになります。今ここに

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_register); 
    final Button registerUsers = (Button) findViewById(R.id.bRegister); 

    registerUsers.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      registerUser(); 
     } 
    }); 
} 

ボタンは、変数が割り当てられ、その後clicklistenerはのonCreate、それに設定されています。今すぐボタンをクリックすると、何かができます。

+0

このコードを実行してエミュレータでテストすると、エミュレータが動作を停止したというエラーが表示されますか? – Bjohnston

+0

これはエラーがあるためです...ログの猫を貼り付けてください – suku

+0

質問に記載されている問題を解決した場合は、それに答えてください。将来的に他の人を助けるだろう – suku

1

iQuoteアンドロイド参照http://developer.android.com/intl/es/reference/android/app/Activity.html#onCreate(android.os.Bundle)

私はまた、あなたが

のonCreate(バンドル)応答にアプリを保つために、データベースの仕事をするためにasynctaskを使用すべきだと思うあなたがあなたの活動を初期化するところです。最も重要なことは、ここでは、通常、UIを定義するレイアウトリソースを持つsetContentView(int)を呼び出し、findViewById(int)を使用して、プログラムで対話する必要のあるUI内のウィジェットを取得します。

ので、それは次のようになります。

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_register); 
EditText regUsernameBox = (EditText) findViewById(R.id.RegUsername); 
EditText regPasswordBox = (EditText) findViewById(R.id.RegPassword); 
Button registerUsers = (Button) findViewById(R.id.bRegister); 

registerUsers.setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     registerUser(); 
    } 
}); 
} 
関連する問題