1

こんにちは、mysqlデータベースに値を挿入する開発をしました。ボタンをクリックした後に詳細を入力しませんでした。これは、空の値も挿入されたことを意味します。disは私のコードです:

  public class RegisterActivity extends Activity{
private final String NAMESPACE = "http://xcart.com";
private final String URL = "http://192.168.1.168:8085/XcartLogin/services/Insert?wsdl";
private final String SOAP_ACTION = "http://xcart.com/insertData";
private final String METHOD_NAME = "insertData";
Button btninsert;
private Button btn_cancel;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.register);

    btninsert = (Button)findViewById(R.id.btn_insert);

    btninsert.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
         insertValues();
         EditText userName = (EditText) findViewById(R.id.editText1);
         if( userName.getText().toString().trim().equals(""))
         {    
           userName.setError( "username is required!" );
           //You can Toast a message here that the Username is Empty
         }
         EditText userPassword = (EditText) findViewById(R.id.editText2);
         if( userPassword.getText().toString().trim().equals(""))
         {    
             userPassword.setError( "password is required!" );
           //You can Toast a message here that the Username is Empty
         }
        else
        {
           Intent i = new Intent(getApplicationContext(), AndroidLoginExampleActivity.class);
           startActivity(i);
        }


             }
         });




}
public void insertValues(){
 SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
 EditText userName = (EditText) findViewById(R.id.editText1);
 String user_Name = userName.getText().toString();



 EditText userPassword = (EditText) findViewById(R.id.editText2);
 String user_Password = userPassword.getText().toString();


 //Pass value for userName variable of the web service
    PropertyInfo unameProp =new PropertyInfo();
    unameProp.setName("userName");//Define the variable name in the web service method
    unameProp.setValue(user_Name);//Define value for fname variable
    unameProp.setType(String.class);//Define the type of the variable
    request.addProperty(unameProp);//Pass properties to the variable

  //Pass value for userPassword variable of the web service
    PropertyInfo passwordProp =new PropertyInfo();
    passwordProp.setName("userPassword");
    passwordProp.setValue(user_Password);
    passwordProp.setType(String.class);
    request.addProperty(passwordProp);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    try{
     androidHttpTransport.call(SOAP_ACTION, envelope);
        SoapPrimitive response = (SoapPrimitive)envelope.getResponse();

        TextView result = (TextView) findViewById(R.id.textView2);
        result.setText(response.toString());

 }
 catch(Exception e){

 }

}

 }.

Web サービス コードは次のとおりです。

package com.xcart;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class Insert {

public String insertData(String userName,String userPassword){

try{

  Class.forName("com.mysql.jdbc.Driver");
  Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/xcart-432pro","root","");
  PreparedStatement statement =  con.prepareStatement("INSERT INTO xcart_customers(login,password) VALUES ('"+userName+"','"+userPassword+"');");
  int result = statement.executeUpdate();
  }

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

  return "Insertion successfull!!";
  }

  }

私を助けてください。

4

1 に答える 1

0

EditText userName = (EditText) findViewById(R.id.editText1);これはoncreateで1回だけ定義 し、アクティビティ全体で使用します。コードでは、insertValues()メソッドを呼び出しており、uはこのメソッドで空の文字列をチェックせずに値を挿入しています。それが理由です。

あなたのコードは以下のようになります

public class RegisterActivity extends Activity{

 EditText userName, userPassword ;  // << changes here
private final String NAMESPACE = "http://xcart.com";
private final String URL = "http://192.168.1.168:8085/XcartLogin/services/Insert?wsdl";
private final String SOAP_ACTION = "http://xcart.com/insertData";
private final String METHOD_NAME = "insertData";
Button btninsert;
private Button btn_cancel;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.register);

    btninsert = (Button)findViewById(R.id.btn_insert);
  user name = (EditText) findViewById(R.id.editText1);// << changes here
userPassword = (EditText) findViewById(R.id.editText2);// << changes here

    btninsert.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {


         if( userName.getText().toString().trim().equals(""))
         {    
           userName.setError( "username is required!" );
           //You can Toast a message here that the Username is Empty
         }
         EditText 
         if( userPassword.getText().toString().trim().equals(""))
         {    
             userPassword.setError( "password is required!" );
           //You can Toast a message here that the Username is Empty
         }
        else
        {   insertValues();  // << changes here
           Intent i = new Intent(getApplicationContext(), AndroidLoginExampleActivity.class);
           startActivity(i);
        }


             }
         });
}
于 2012-07-30T07:15:55.663 に答える