2012年4月11日 星期三

android開發-利用button進行webserver資料存取-簡單介紹



程式碼片段-website程式
[WebMethod]
    public int Insert(String msg_content)
    {
        SqlConnection conn = new SqlConnection(CONNECT);

        conn.Open();

        SqlTransaction tran = conn.BeginTransaction();

        string sql = "Insert into Message(msg_content,msg_now) values (@msg_content, @msg_now)";

        SqlCommand sqlcmd = new SqlCommand(sql, conn, tran);

        sqlcmd.Parameters.Add("@msg_content", SqlDbType.Text).Value = msg_content;
        sqlcmd.Parameters.Add("@msg_now", SqlDbType.DateTime).Value = DateTime.Now;

        try
        {
            sqlcmd.ExecuteNonQuery();
            tran.Commit();
        }
        catch (Exception e)
        {
            tran.Rollback();

        }

        sqlcmd.Dispose();
        conn.Close();
        conn.Dispose();

        return 1; //回傳成功,呈現數字1
    }



程式碼畫面
以本機server測試,http://localhost/Website/WebService.asmx?op=Insert



android手機開發「讀取」button程式碼片段
insert=(Button)findViewById(R.id.button1);
insert.setOnClickListener(new Button.OnClickListener(){

   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    final ProgressDialog mydialog=new ProgressDialog(TestActivity.this);
    mydialog.setTitle("請稍後!");
    mydialog.setMessage("紀錄新增中...!");
    mydialog.show();
    //output.setText("測試~~~");
    //output.setText(input.getText().toString());
    System.out.println("1");
    new Thread(){
     
     public void run(){
      int num;
      int x = 10;
      int y = 3;
      
      try{
       //num = x/y; //模擬伺服器處理結果
       //System.out.println("2:" + num);
       message = WebService.InsertMsg(input.getText().toString());
       
       sleep(3000);
       handler.post(right_message);
      }catch(Exception a){
       System.out.println("3");
       handler.post(error_message);
       a.printStackTrace();
      }finally{
       System.out.println("4");
       mydialog.dismiss();
      }
     }
    }.start();
   
    handler = new Handler();
    right_message = new Runnable() 
    {
     public void run() {
      // TODO Auto-generated method stub
      
     }
     
    };
    
    error_message = new Runnable() 
    {

     public void run() {
      // TODO Auto-generated method stub
      
     }
     
    };
    
    System.out.println("5");
    
   }
         
        });

public static String InsertMsg(String personal){
      
      //String method = "getMessage";
      String method = "Insert";
      String output = "";
      ArrayList list = null;

      try
      {
       
       SoapObject request = new SoapObject(NAMESPACE, method);
       request.addProperty("msg_content", personal);
       
             SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
             envelope.dotNet = true;
             envelope.setOutputSoapObject(request);  

             HttpTransportSE androidHttpTransport = new HttpTransportSE(URL_PATH + SERVICE_NAME); 
             androidHttpTransport.call(NAMESPACE + method, envelope);

             Object result = envelope.getResponse();
             output = result.toString();
             
      }catch(Exception e){}
      
      System.gc();
   
      return output;  
     }



畫面執行結果



完整說明如下:
http://linjsian.blogspot.com/2012/04/android-buttonwebserver_10.html

沒有留言:

張貼留言