Avatar billede tipper Nybegynder
05. februar 2002 - 13:20 Der er 4 kommentarer og
1 løsning

Web service...

Hej alle i raske svende
Jeg kunne tænke mig at se et eksemple på en web service som returnere et array af elementer...
Helst skrevet i C#, men VB.Net er også OK.
Anyone?
Avatar billede odegaard Nybegynder
05. februar 2002 - 17:08 #1
Jeg har udviklet en lille webservice, som giver mulighed for at søge i en MP3-databasen. Næste skridt som jeg nu arbejder på, er at lave et WinAmp-plugin som forbinder til webservicen, så der der bliver integreret en søgemaskine til et lokalnetværk (man skal jo finde på et eller andet for at afprøve mulighederne i den nye teknologi).
Anyway, webservices giver mulighed for lidt forskellige muligheder til søgninger. Jeg har dog slettet de fleste, da det kun er SQL-syntaksen der er anderledes.

Koden følger herunder.
Venligst
/Odegaard
--------Code begin---------


<%@ WebService Language="VB" Class="mp3db" %>

Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Web.Services

<WebService(Namespace:="http://minmaskine/Webservices/")> Public Class mp3db : Inherits WebService
  Private ConnStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\søgemaskine\mp3db.mdb"
  Private objConn As OleDbConnection
  Private strSQL As String

  <WebMethod(Description:="Searches the database by artist")> _
  Public Function SearchArtist(str As String) As DataSet
        if str="" Then
        Return Nothing
    Else
        strSQL = "SELECT * from mp3main where "
            strSQL = strSQL & "artist like '%" & str & "%'"
            strSQL = strSQL &  " ORDER BY artist,album,songname"
        return doQuery(strSQL)
    End if
  End Function

  <WebMethod(Description:="Returns statistics from the database")> _
  Public Function GetStats() As DataSet
    return doQuery("SELECT Sum([length]) As TotalSeconds, Count(*) As NoOfFiles FROM mp3main;")
  End Function

  Private Function doQuery(strSQL as String) As DataSet
    try
        objConn = new OleDbConnection(ConnStr)
        Dim objDataCmd As OleDbDataAdapter = New OleDbDataAdapter(strSQL, objConn)
        Dim objDS as new DataSet
        objDataCmd.Fill(objDS)   
        return objDS
        objConn.Close()
    catch ex as OleDbException
        return nothing
    end try
  End Function
End Class
Avatar billede odegaard Nybegynder
06. februar 2002 - 08:29 #2
Hvad er der galt med eksemplet? Hvis du vil returnere et array, så skriver du jo bare at funktionen skal returnere et array, i stedet for et dataset.
Avatar billede dr.kaos Nybegynder
06. februar 2002 - 22:29 #3
odegaard har ret, hvis du vil retunere er array skriver du bare det. men det var vist lige det du spurgte om. Alså hvordan man gør dette.

Der er en flok eksempler her ved dette link i diverse sprog på hvordan man retuner forskelligt typer.
http://www.gotdotnet.com/QuickStart/aspplus/default.aspx?url=/quickstart/aspplus/doc/webservicetypes.aspx

Herfra fandt jeg også exempelet herunder der netop retunere et array af int. Skal det være lidt mere komplicered omkring objekter kan du bruge ArrayList men så skal du nok også definerer nogle Serialization værdier for web metoden.

  [WebMethod]
  public int[] GetIntArray()
  {
      int[] a = new int[5];
      for (int i=0; i<5; i++)
          a[i] = i*10;
      return a;
  }


Dr.Kaos
Avatar billede dr.kaos Nybegynder
06. februar 2002 - 22:30 #4
odegaard har ret!
Hvis du vil retunere er array skriver du bare det. men det var vist lige det du spurgte om. Alså hvordan man gør dette.

Der er en flok eksempler her ved dette link i diverse sprog på hvordan man retuner forskelligt typer.
http://www.gotdotnet.com/QuickStart/aspplus/default.aspx?url=/quickstart/aspplus/doc/webservicetypes.aspx

Herfra fandt jeg også exempelet herunder der netop retunere et array af int. Skal det være lidt mere komplicered omkring objekter kan du bruge ArrayList men så skal du nok også definerer nogle Serialization værdier for web metoden.

  [WebMethod]
  public int[] GetIntArray()
  {
      int[] a = new int[5];
      for (int i=0; i<5; i++)
          a[i] = i*10;
      return a;
  }


Dr.Kaos
Avatar billede tipper Nybegynder
07. februar 2002 - 09:26 #5
Det var en fejl med odegaard, han skulle havde haft pointene, men sådan gik det ikke...ups! Du får dem da dit svar er rigtigt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester