0

Androidの例を1つ開発する必要があります。

mysql データベースからデータを取得し、Android アプリケーションに表示します。

以下のWebサービスコードを使用しました:

public class EditProfile {
public String customerData(String Username,String Password,String Firstname,String Lastname,String Company,String Taxnumber,String Baddress,String Bcity,String Bstate,String Bcountry,String Bzipcode,String Saddress,String Scity,String Sstate,String Scountry,String Szipcode,String Email,String Phone,String Fax,String Url){

 String customerInfo = "";

try{

Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://10.0.0.75:3306/xcart432pro","root","");
 PreparedStatement statement =  con.prepareStatement("SELECT * FROM xcart_customers where login = '"+Username+"'");
 ResultSet result = statement.executeQuery();

while(result.next()){
            customerInfo = customerInfo + result.getString("login") + ":" +result.getString("password")+ ":" +result.getString("firstname")
    }

     }
     catch(Exception exc){
         System.out.println(exc.getMessage());
           }
        return customerInfo;
        }

以下のAndroidコードを使用しました:

 public class RetailerActivity extends Activity {
    private final String NAMESPACE = "http://xcart.com";
  private final String URL = "http://10.0.0.75:8085/XcartLogin/services/EditProfile?wsdl";
  private int i;
  private final String SOAP_ACTION = "http://xcart.com/customerData";
  private final String METHOD_NAME = "customerData";

  String str,mTitle;
  /** Called when the activity is first created. */
  @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
         try {
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

     envelope.setOutputSoapObject(request);

     HttpTransportSE ht = new HttpTransportSE(URL);

       ht.call(SOAP_ACTION, envelope);

         SoapPrimitive s = response;
        str = s.toString();
       String[] words = str.split(":");
       TextView tv = (TextView) findViewById(R.id.user);
        tv.setText(Username);

      EditText tv1 = (EditText) findViewById(R.id.pass);


        tv1.setText(words[1].toString());
      EditText tv2 = (EditText) findViewById(R.id.tf_userName);


         tv2.setText(words[2].toString());

          for (int i = 0, l = words.length; i < l; ++i) {
                }}

       catch (Exception e) {
          e.printStackTrace();
           }
            }}

ここで、アプリを実行する必要があります。これは、mysql データベースからデータを取得し、Android にデータを表示することを意味します。しかし、応答を取得できませんでした。

ここで、静的のような条件を記述する必要があります。

SELECT * FROM xcart_customers where login = 'mercy'"); means fetching the data from mysql database and display the data for that user.its successfully worked.

しかし、私はコードを動的に記述しました

"SELECT * FROM xcart_customers where login = '"+Username+"'"); means

応答がありませんでした。助けてください。

どうすればこれらを開発できますか。これらの解決策またはアイデアを教えてください。

4

2 に答える 2

1

ユーザー名変数が有効な値を保持していない可能性がありPreparedStatementます。クエリを呼び出す前にそれを印刷してみてください.PreparedStatement APIplace holders

 PreparedStatement statement =  con.prepareStatement("SELECT * FROM xcart_customers where login = ?);
statement.setString(1, username);
 ResultSet result = statement.executeQuery();
于 2013-01-31T10:38:23.980 に答える
0

本当の答えではありませんが、基本的に、私の知る限り、(jdbc またはその他の考えられる方法を介して) 外部データベースとの 1on1 接続を作成しようとするのは悪い習慣です。

これは、接続が失われたなどの結果としてデバイスでひどく問題が発生する可能性があるすべてのことを処理するようには設計されていません.

代わりに、データベースを公開するための小さな (REST をお勧めします) Web サービスを作成する方がはるかに優れています。

于 2013-01-31T10:41:56.983 に答える