본문 바로가기

안드로이드

Android , asp.net, mssql 연동 [1]

반응형

asp.net 과 안드로이드 앱 연동을 포스팅 해보려고 합니다.. (xml, soap통신 이용)



1. asp.net 웹사이트에  웹서비스 -> 웹메소드 구현

2. android에서 Soap통신 클래스 작성

3. searchData 결과값 xml 파싱



-----------------------------------------------------------------------------------------------------

1. 웹서비스 구축 : 

  1)  비쥬얼 스튜디오를 사용하였습니다

  2)  웹사이트와  db는 구축되어 있고  테이블이름은 Table_Name   칼럼은 Name,Date,Tel 으로  데이터를 미리 몇개   인서트 해놓은 상태입니다...

  3)  비쥬얼스튜디오-> 솔루션 탐색기-> 새항목추가 -> 웹서비스 하면 

         파일이름.asmx  와 파일이름.cs가 생깁니다..  여기서는 WebService라고 이름을 주었습니다.

  4) WebService.cs 파일을 열면 아래와 같이 보입니다..


using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Services;


/// <summary>

/// WebService의 요약 설명입니다.

/// </summary>

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

// ASP.NET AJAX를 사용하여 스크립트에서 이 웹 서비스를 호출하려면 다음 줄의 주석 처리를 제거합니다. 

// [System.Web.Script.Services.ScriptService]

public class WebService : System.Web.Services.WebService {


    public WebService () {


        //디자인된 구성 요소를 사용하는 경우 다음 줄의 주석 처리를 제거합니다. 

        //InitializeComponent(); 

    }


    [WebMethod]

    public string HelloWorld() {

        return "Hello World";

    }

    

}



3)  HelloWorld() 메소드를 편집합니다.. 이름이 별로니.. Response_SearchData()로 바꾸고 파라미터도 넣어줍니다.

  ( 어떤 검색값을 받으면 검색결과과 포함된 문자열의 데이터값을  xml로 리턴해주는 예제 소스입니다)

   [WebMethod]

    public string Response_SearchData(string searchData)

    {

        String strResonse;


        SqlConnection con = new SqlConnection (System.Configuration.ConfigurationManager.ConnectionStrings["testConnectionString"]

.ConnectionString);

        

sqlwhere = string.Format("Name like '%{0}%'", searchData);

sql = string.Format("SELECT [Name],[Date],[Tel], FROM Table_Name where {0}" ,sqlwhere);


         DataSet ds = new DataSet();

        strResonse = "";


        try

        {

            con.Open();

            SqlDataAdapter da = new SqlDataAdapter(sql.ToString(), con);

            da.Fill(ds);


            strResonse = ds.GetXml();

        }

        catch (SqlException ex)

        {

            strResonse = "Error:" + ex.ToString();

        }

        catch (Exception ex)

        {

            strResonse = "Error:" + ex.ToString();

        }

        finally

        {

            if (con.State == System.Data.ConnectionState.Open)

            {

                con.Close();

            }

        }

        return strResonse;


SqlConnection con = new SqlConnection (System.Configuration.ConfigurationManager.ConnectionStrings

["testConnectionString"].ConnectionString);

 이해가 안되실 텐데요 web.cofing 파일에 testConnectionString 이라는 sql 서버에 접속하는 문장을 구현해 주셔야 합니다.. 인터넷에 asp.net 에서 디비 접속하는 방법은 많으니 이부분은 패스하겠습니다... 


- sqlwhere = string.Format("Name like '%{0}%'", searchData);

  sql = string.Format("SELECT [Name],[Date],[Tel], FROM Table_Name where {0}" ,sqlwhere);

 흔한 sql 문입니다. Table_Name 테이블에서  Name이 포함된 열의 Name,Date,Tel 값을 가져다 줍니다..


-  con.Open();

    SqlDataAdapter da = new SqlDataAdapter(sql.ToString(), con);

    da.Fill(ds);

    strResonse = ds.GetXml();

     쿼리문을 실행해서 조건에 맞는 값을 xml로 만들어 줍니다..


- ctr+f5 를 눌러서 웹메소드를 실행해 봅니다..

-이런것이 나오면 성공!!

- Response_SearchData를 눌러서 검색할 값을 입력해서 




웹브라우저에 정상적인 xml 값이 나온다면 서버 프로그램은 완성입니다..

( Name 에 "tae"를 포함한  row의  Name,Date,Tel 을 xml로 반환)


<string xmlns="http://tempuri.org/">

<NewDataSet><Table><Name>taeyoun</Name><Date>2011-12-31</Date><Tel>010-111-2222</Tel></Table>

<Table><Name>taehoon</Name><Date>1980-12-31</Date><Tel>010-333-444</Tel></Table></NewDataSet>

</string> 


양이 너무 많아서 2편에서 계속됩니다...














반응형