2016-12-19 5 views
0

データベースからデータを取得するために、以下のようにWebサービスを使用しています。そのコードでは、静的な文字列の接続と文字列のクエリがあります。私は、複数の機能に同じWebサービスを使用しています。同じ関数を使用する代わりに、同じコードを複数回使用することを避けるために、文字列クエリと文字列接続を手動で行う必要があります。実行時に文字列の接続と文字列のクエリを与えることは可能ですか?SQL文字列の接続と文字列のクエリを手動で追加するWebサービスコード?

ここにコードがあります。

<WebMethod()> _ 
Public Function GetData() As String 

    Dim sqlcon As New SqlClient.SqlConnection 
    Dim sqlcmd, cmd As SqlClient.SqlCommand 
    Dim objeDS, objeDS1 As DataSet 
    Dim adpp, adpp1 As SqlClient.SqlDataAdapter 
    Dim dt, dt1 As DataTable 

    Dim pack_tbl As New DataTable 

    sqlcon.ConnectionString = ConfigurationManager.AppSettings("constr") 
    sqlcon.Open() 

    sqlcmd = New SqlClient.SqlCommand() 
    sqlcmd.Connection = sqlcon 
    sqlcmd.CommandType = CommandType.Text 
    sqlcmd.CommandText = "sqlcommand" 
    objeDS = New DataSet() 
    adpp = New SqlClient.SqlDataAdapter() 
    adpp.SelectCommand = sqlcmd 

    adpp.Fill(objeDS) 
    sqlcon.Close() 
    dt = New DataTable() 
    dt = objeDS.Tables(0) 
    Return objeDS.GetXml() 
    'Return "Welcome" 

End Function 

答えて

0

このコードを試してみてください。

VBコード

<WebMethod()> _ 
Public Function GetData(ByVal strQuery As String, ByVal strCon As String) As String 
    Dim dt As New DataTable() 
    dt.Clear() 
    Using conn As New System.Data.SqlClient.SqlConnection() 
     conn.ConnectionString = ConfigurationManager.ConnectionStrings(strCon).ConnectionString 
     Using cmd As New System.Data.SqlClient.SqlCommand() 
      cmd.CommandText = strQuery 
      cmd.Connection = conn 
      conn.Open() 
      Dim da As New SqlDataAdapter(cmd) 
      da.Fill(dt) 
      Dim serializer As New System.Web.Script.Serialization.JavaScriptSerializer() 
      Dim rows As New List(Of Dictionary(Of String, Object))() 
      Dim row As Dictionary(Of String, Object) 
      For Each dr As DataRow In dt.Rows 
       row = New Dictionary(Of String, Object)() 
       For Each col As DataColumn In dt.Columns 
        row.Add(col.ColumnName, dr(col)) 
       Next 
       rows.Add(row) 
      Next 
      Return serializer.Serialize(rows) 
     End Using 
    End Using 
End Function 
関連する問題