2013-03-27 3 views
1

웹 서비스에서 AS400 데이터를 제공하고 있습니다. 이 웹 서비스는 내가 아래 dynamic.See 코드 수 있도록하고자하는 고정 된 연결 문자열이 있습니다 사용jQuery에서 ASP.Net webservice에 연결 객체를 전달하십시오.

Public Function GetData(sql As String) As DataTable 

      Dim _data As DataTable 

      Try 

       Dim s As String = "Provider=IBMDA400" 

       s &= ";Data Source=" & "x.x.x.x" 
       s &= ";User Id=" & "USER" 
       s &= ";Password=" & "PASS" 
       s &= ";Default Collection=" & "AAABBB" 

       con = New OleDbConnection(s) 

       Dim cmd As New OleDbCommand 

       With cmd 
        .Connection = con 
        .CommandType = CommandType.Text 
        .CommandText = sql 
       End With 

       Dim dap As New OleDbDataAdapter(cmd) 

       con.Open() 

       Dim dat As New DataSet 

       dap.Fill(dat) 

       con.Close() 
       con.Dispose() 

       _data = dat.Tables(0) 

      Catch ex As Exception 

       _data = New DataTable 

      End Try 

      Return _data 

     End Function 

샘플 웹 서비스 기능을 위 :

<WebMethod()> _ 
     Public Function GetPicklistLines(picklist As String) As List(Of PicklistLine) 

      Dim lines As New List(Of PicklistLine) 
      Dim line As PicklistLine 

      sql = "select " & _ 
            "OLPLNO,OLPLLI,OLORNO,OLLINE,OLPRDC,OLDESC,OLOQTS,OLCQTS,OLUNIT,OLORDS,PGDRNR, AAV01, AAV02, NAV03 " & _ 
            "from SRBSOL " & _ 
            "left outer join SRBPRG on PGPRDC=OLPRDC " & _ 
            "left outer join Z2OOCFGF on F0ERNC=OLORNO and F0A2NB=OLLINE " & _ 
            "where OLPLNO=" & picklist & " and OLSTAT <>' D'" 

      data = GetData(sql) 

      ' TODO: insert ROW 0 to set active: 
      sql = "insert " & _ 
        "into SRBSOL " & _ 
        "(OLPLNO, OLPLLI) " & _ 
        "values " & _ 
        "(" & picklist & "," & 0 & ") " & _ 
        "where OLPLNO=" & picklist & " and OLSTAT <>' D'" 

      For Each dr As DataRow In data.Rows 

       ' TODO: get reported quantity: 
       sql = "select " & _ 
         "RCBAQT " & _ 
         "from Z2OOREXC " & _ 
         "where RCPLNO='" & picklist & "' and RCPLLI='" & dr("OLPLLI") & "'" 

       line = New PicklistLine 

       With line 
        .PicklistNumber = picklist 
        .OrderNumber = IIf(TypeOf (dr("OLORNO")) Is DBNull, "", dr("OLORNO")) 
        .PicklistLinenumber = IIf(TypeOf (dr("OLPLLI")) Is DBNull, "", dr("OLPLLI")) 
        .Item = IIf(TypeOf (dr("OLPRDC")) Is DBNull, "", dr("OLPRDC")) 
        .ItemDescription = IIf(TypeOf (dr("OLDESC")) Is DBNull, "", dr("OLDESC")) 
        .InnerColor = IIf(TypeOf (dr("AAV01")) Is DBNull, "", dr("AAV01")) 
        .OuterColor = IIf(TypeOf (dr("AAV02")) Is DBNull, "", dr("AAV02")) 
        .Length = IIf(TypeOf (dr("NAV03")) Is DBNull, "", dr("NAV03")) 
        .Unit = IIf(TypeOf (dr("OLUNIT")) Is DBNull, "", dr("OLUNIT")) 
        .Quantity = IIf(TypeOf (dr("OLCQTS")) Is DBNull, "", CInt(dr("OLCQTS"))) 
        .Needed = IIf(TypeOf (dr("OLOQTS")) Is DBNull, "", CInt(dr("OLOQTS"))) 
       End With 

       lines.Add(line) 

      Next 

      Return lines 

     End Function 

위의 기능이 JQuery와에 의해 호출된다 :

function GetAllPicklists() { 
    $('#page_overview_search').addClass('ui-disabled'); 
    $("#Picklists").html(''); 
    //$("#MemberList").addClass("loading"); 
    $.ajax({ 
     type: "POST", 
     url: "http://" + host + "/services/picklists.asmx/GetAllPicklists", 
     data: "{'customer':'" + $('#select-customer').val() + "', 'route':'" + $('#select-route').val() + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: OnGetAllPicklistsSuccess, 
     error: OnError 
    }); 
} 

내가 JSON을 제공하는 웹 서비스 기능을 수정 한하지만이 진행 중입니다 ... :)

모든 것이 예상대로 작동하지만 연결 문자열을 s GetData에서 동적으로 만들고 싶습니다. 나는 데이터 소스 (IP), 사용자 ID, 비밀번호기본 컬렉션 값과 (아직 정의) 연결 개체를 설정에 대한 이동하는 방법. jquery POST 데이터 매개 변수에서 해당 연결 개체와 서비스 함수 호출 매개 변수를 전달하는 방법은 무엇입니까? 나중에 로그인 할 때이 연결 개체를 설정할 수 있습니까?

불확실한 점을 명확히하기 위해 질문하십시오.

미리 감사드립니다.

+0

사용중인 ASW의 버전은 무엇입니까? – SnakeDoc

+0

질문 : 2013, 전환 작업 .. :) – grmbl

+1

나는 알고있다. 당신은 단지 야생에서 IBS 고객을 매우 자주 만난다. – SnakeDoc

답변

0

서비스 호출을 통해 데이터를 전달하는 것은 좋은 선택이 아닙니다. SQL 연결 문자열은 쉽게 해킹 될 수 있습니다. wcf 서비스를 사용하고 메시지 계약을 사용하여 정보를 전달할 수 있습니다.

관련 문제