Mithilfe von visual studio und C# auf Datenbank zugreifen



  • Hallo liebe community,

    meine Gruppenpartnerin und ich haben von unserem Professor eine etwas schwierige Aufgabe bekommen. Leider haben wir nicht so große Vorkenntnisse bezüglich dieses Themas. Wir sind sozusagen ins kalte Wasser geschmissen worden

    Nun hoffen wir, dass uns jemand Starthilfe leisten kann

    Mit Hilfe der C# Programmierung in Visual Studio 2010 sollen wir eine Website erstellen die eine Textbox enthält, in die man eine seltene Erkrankung eingeben kann und einen Button, mit dem man eine Suche in der PubMed Datenbank startet. Diese soll dann die jeweiligen Authoren selektieren, die zu dieser Krankheit Artikel geschrieben haben. Da wir mit C# noch nie programmiert haben, haben wir uns in einige Tutorial reingelesen.

    Momentan haben wir eine Website mit einer Textbox, einem Button und zunächst einmal einer weiteren Textbox wo wir die Authoren ausgeben wollen.

    Wir haben auch http://eutils.ncbi.nlm.nih.gov/soap/v2.0/efetch_pubmed.wsdl und http://eutils.ncbi.nlm.nih.gov/soap/v2.0/eutils.wsdl als Service Reference in Visual Studio angegeben.
    wie in http://www.ncbi.nlm.nih.gov/books/NBK55694/#csharp_msvs.Call_HYPERLINK__chaptercha_8 beschrieben.

    so sieht nun unser code aus:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    public partial class MyWebsite : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void TextBox2_TextChanged(object sender, EventArgs e)
    {
    try
    {
    eFetchPubMed.eUtilsServiceSoapClient serv = new eFetchPubMed.eUtilsServiceSoapClient();
    // call NCBI EInfo utility
    eFetchPubMed.eFetchResult res = serv.run_eFetch(new eUtils.eFetchRequest());
    // results output
    TextBox2.Text = "";
    for (int i = 0; i
    }
    catch (Exception eee)
    {
    TextBox1.Text = eee.ToString();
    }

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
    // eInfo utility returns a list of available databases

    }
    protected void TextBox1_TextChanged(object sender, EventArgs e)1
    {
    }
    }

    leider wissen wir nicht genau wie wir weiter machen können. Kann uns vllt jemand auf die Sprünge helfen und uns Anlauftipps geben wie wir es angehen könnten. Wie gesagt sind wir Programmieranfänger. Wir sind um jeden Tipp dankbar 🙄



  • Einfach mal nach EntityFramework googeln



  • @UmDieEcke

    könntest du bitte genauer erklären was du dir mit Entity framework gedacht hast?
    hab zwar gegoogelt, weiß aber nicht wie mir das genau helfen soll. 😕



  • Auf die pubmed-Datenbank wird demnach ja über den Webservice zugegriffen.
    Ihr müsstet also verstehen wie deren Webservice funktioniert und wie man da Suchanfragen stellt.

    Spontan würde ich sagen mit eSearchRequest kann man scheinbar Suchanfragen stellen und bekommt IDs zurück. Nähere Infos zu den IDs, wird man dann vermutlich mit eFetchRequest bekommen.



  • nun mit eFetch haben wir es auch probiert. Leider klappt es noch nicht. Ich wäre um Vorschläge sehr dankbar. Weil irgendwie stehen wir momentan auf dem Schlauch 😮



  • Wie unter dem Kapitel "Call EFetch" beschrieben, müßt ihr noch Parameter (z.B. "id") angeben, nach denen gesucht werden soll.
    Bisher erstellt ihr ja mittels "new eUtils.eFetchRequest()" ein default (d.h. leeren) Request. In dem verlinkten Dokument unter "NCBI Entrez Utilities Web Service API" findet ihr die Eigenschaften (als Links mit weiteren detaillierteren Erklärungen, z.B. für "id": http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.id_3)

    Als erstes solltet ihr jedoch die Grobstruktur eures Programms erstellen, d.h. die Reihenfolge bestimmen, welche der WebService-Methoden ihr aufrufen wollt (also z.B. erst Info, dann Search, dann Fetch o.ä) und in welchen Ereignissen ihr diese dann aufruft.

    Für Programmieranfänger ist dies wirklich eine Herausforderung (selbst ich bräuchte wohl einige Tage, um die Gesamtstruktur des WebServices zu verstehen).

    Viel Erfolg.



  • Hallo liebe community,

    mit dem Webservice für Pubmed kamen wir leider nicht weiter. Vorallem fiel uns auf, dass es nicht mehr sehr aktuell ist und wenn man zum Beispiel nach Titel fragt andere Werte ausgegeben werden.

    Nach etwas gegoogel 🙂 haben wir eine andere Methode gefunden um auf Pubmed zuzugreifen. Httpwebrequest.

    So sieht unser Code aus:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Net;
    using System.IO;

    public partial class Default2 : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
    Uri targetUri = new Uri("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=14728583&rettype=fasta&retmode=xml");
    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(targetUri);
    HttpWebResponse rp = (HttpWebResponse)webRequest.GetResponse();
    System.Text.Encoding enc = System.Text.Encoding.GetEncoding(1252);
    StreamReader reader = new StreamReader(rp.GetResponseStream(), enc);
    Button1.Text = reader.ReadToEnd();
    }

    }

    Wenn wir auf Button klicken erscheint die XML Struktur von Pubmed.
    Wie kriegen wir es hin, dass diese XML Struktur zunächst einmal in einer TextBox erscheint nachdem wir auf den Button klicken?

    Denn wenn wir diesen Code so eingeben:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Net;
    using System.IO;

    public partial class Default2 : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {

    }

    protected void TextBox2_TextChanged(object sender, EventArgs e)
    {
    Uri targetUri = new Uri("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=14728583&rettype=fasta&retmode=xml");
    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(targetUri);
    HttpWebResponse rp = (HttpWebResponse)webRequest.GetResponse();
    System.Text.Encoding enc = System.Text.Encoding.GetEncoding(1252);
    StreamReader reader = new StreamReader(rp.GetResponseStream(), enc);
    TextBox2.Text = reader.ReadToEnd();
    }
    }

    erscheint

    Zeile: 72
    Fehler: Ungültiges aufrufendes Objekt.

    Ich verstehe nicht warum es Probleme gibt wenn wir es in die Textbox schreiben.. und es beim Button funktioniert?



  • Du willst im "TextChanged" Event der TextBox den Text der selben TextBox ändern?
    Echt jetzt?

    Davon abgesehen... es wäre wohl sinnvoll anzugeben was bei dir "Zeile 72" ist, und wo dieser Fehler genau "erscheint".



  • Hallo liebe Leute,

    manchmal sieht man den Wald vor lauter Bäumen nicht.
    Keine Ahnung warum ich im Button_Click event den Inhalt dann auch immer wieder im Button ausgegeben habe.
    Nun jetzt habe ich es auf die 2. Textbox umgeleitet #schäm#

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.IO;
    using System.Net;
    using System.Xml;
    using System.Xml.XPath;

    namespace WebApplication1
    {
    public partial class website : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
    Uri targetUri = new Uri("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=14728583&rettype=fasta&retmode=xml");
    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(targetUri);
    HttpWebResponse rp = (HttpWebResponse)webRequest.GetResponse();
    System.Text.Encoding enc = System.Text.Encoding.GetEncoding(1252);
    StreamReader reader = new StreamReader(rp.GetResponseStream(), enc);
    TextBox2.Text = reader.ReadToEnd();
    }
    }
    }

    Wie kann ich denn nun durch die Eingabe einer Krankheit in der 1. Textbox dann Klick auf Button. Zunächst einmal die Ids der Authoren ausgeben, die dazu einen Artikel geschrieben haben?? Bin überhaupt froh, dass wir zunächst einmal durch httpwebrequest eine Verbindung zu PubMed haben. Für jeden Tipp wäre ich sehr dankbar. 😉


Anmelden zum Antworten