Ueber MS SQL zugriff auf einen Ordner

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von Creator110.

    Ueber MS SQL zugriff auf einen Ordner

    Hallo @ all,

    ich habe da ein kleines Problem,

    ich soll eine VB.net Webanwendung entwickeln, die einen Ordner ausliest und die Namen der Dateien (*.PDF/*.DOCX) in eine SQL-Tablle schreibt.
    Des weiteren soll man dann auf die Namen klicken koennen und es soll sich dann diese Datei oeffnen.
    Die Anzeige und das auslesen funktioniert schon, ebenso das eintragen ( aber leider nur ohne Variablen, bekomme es nich hin :( ).
    Meine Frage ist nun, wie bekomme ich es hin, dass ich automatisch eine Art Hyperlink auf die Eintraege bekomme?


    Hier mal die Sub zum eintragen, weis nicht wie ich da Variablen fuer "docname", "displayname" und "author" richtig einfuegen soll.

    VB.NET-Quellcode

    1. Public Sub schreiben()
    2. 'in die Datenbak schreiben
    3. strsqlSchreib = "INSERT INTO Stellen (docname, displayname, author) values ('Name des Dokuments', 'Ich bin der Anzeigename', 'Author')"
    4. Using cn As New OleDbConnection With
    5. {.ConnectionString = strConnectionString}
    6. Using cmd As New OleDbCommand With
    7. {.Connection = cn, .CommandText = strsqlSchreib}
    8. cn.Open()
    9. dtList.Load(cmd.ExecuteReader)
    10. End Using
    11. End Using
    12. End Sub


    Ich bedanke mich schonmal im bei allen die bereit sind mir zu Helfen ^^ ^^ ^^
    Sorry, hab vergessen dazu zu sagen das ich in Sachen VB eigentlich noch blutieger Anfaenger bin.
    Koenntest du mir Kurz sagen was du damit meinst oder etwas genauer darauf eingehen?
    Das soll jetzt nicht boese klingen aber mit der Aussage kann ich leider nicht viel anfangen.
    Hi,

    gespeicherte Prozeduren werden auf dem SQL Server geschrieben und in VB aufgerufen und deine Werte als Parameter übergeben.

    Anlegen der Prozedur müsste ungefähr so aussehen.

    SQL-Abfrage

    1. CREATE PROCEDURE [dbo].[myProc]
    2. (
    3. @param_docname NVARCHAR(MAX),
    4. @param_displayname NVARCHAR(MAX),
    5. @param_author NVARCHAR(MAX)
    6. )
    7. AS
    8. DECLARE @ID INT
    9. INSERT INTO
    10. Stellen(docname, displayname, author)
    11. VALUES
    12. (@param_docname, @param_displayname, @param_author);
    13. SELECT @ID = SCOPE_IDENTITY()
    14. RETURN @ID


    Du bekommst die ​ID zurück als Bestätigung dass der Datensatz angelegt wurde.

    Ich linke hier mal auf den Rheinwerk Verlag für den VB Code

    EDIT: ​myProc durch was Sinnvolles ersetzen.
    Und ich gehe davon aus das es nur diese drei Spalten plus ID Spalte gibt.
    Zudem bitte die Datentypen der Variablen anpassen. Wenn z.B. docname "nur" NVARCHAR(100) ist dann auch hier verwenden
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.

    MrTrebron schrieb:

    Servus,

    am Bestern gar nicht. Mit einer gespeicherten Prozedur geht das viel einfacher und sicherer.


    So ein Quatsch :D
    Wenn er nicht weiß wie man einen SQL String bastelst, glaube ich kaum, dass er eine stored procedure hinbekommt ...

    du musst einfach deinen SQL String dementsprechend basteln.

    z.B.

    VB.NET-Quellcode

    1. 'in die Datenbak schreiben
    2. Dim docname as String = ...
    3. Dim anzeigename as String = ...
    4. Dim author as STring = ...
    5. strsqlSchreib = "INSERT INTO Stellen (docname, displayname, author) values (' & docname & "', '" &anzeigename &"','"&author & "')"


    Nachdem du den String gebastelt hast, kannst du in einfach an deinen SQL Server schicken.

    Zweite Möglichkeit mit Parametern hab ich leider gerade nicht im Kopf und keine Möglichkeit nachzuschauen.

    shaebich schrieb:

    du musst einfach deinen SQL String dementsprechend basteln.


    Die ist klar das hier keine Sicherheit besteht? Stichwort SQL Injection.

    Und bevor hier einer mit typisierten Dataset kommt stet weiter oben die Prozedur

    Creator110 schrieb:

    Und wie bekomme ich das hin, dass ich einen Ordner auslesen kann und die DB dann z.B. bei "docname" den Namen des Dokuments uebergibt????
    Du meinst das eigentliche lesen der Namen der Dateien aus dem Ordner?
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Ja genau, die Dateinamen einlesen und das mann dann halt auf die Ausgaeb klicken kann und sich dann diese Datei oeffnet.

    Ich glaube die Sicherheitsfrage ist ein meinem Fall nich sooo wichtig.

    Das bleibt alles im Intranet ;) .

    Koregier mich falls ich da falsch liege.
    Hier um die Dateinamen zu erhalten

    VB.NET-Quellcode

    1. Dim tmpDocname As String = String.Empty
    2. For Each item As String In IO.Directory.GetFiles("c:\ordner")
    3. If IO.Path.GetExtension(item) = ".pdf" Then
    4. tmpDocname = IO.Path.GetFileName(item)
    5. 'Do something with tmpDocname
    6. End If
    7. Next


    Und mit

    VB.NET-Quellcode

    1. ​Process.Start("C:\beispiel.txt")
    lässt du den Explorer eine Datei mit dem Standardprogramm öffnen
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Naja, du musst halt den Click in deiner Darstellung auswerten. Da weiß ich jetzt nicht wie du das Darstellst. Hier könnte aber wirklich ein DataGridView mit DataSet helfen.

    Im DGV kannst du auswerten was geklickt wurde und dass dann an den Process.Start(UebergabeVariable) Übergeben
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.

    Creator110 schrieb:

    Ich glaube die Sicherheitsfrage ist ein meinem Fall nich sooo wichtig.
    Koregier mich falls ich da falsch liege.
    Da liegst du falsch.
    Das Problem ist vlt. jetzt nicht die Anwendung, sondern das Problem bist du! Weil du dir da einen Sch... angewöhnst, der sich sehr sehr böse rächen kann.

    Und lass dich mit soner Einstellung nicht von deinem Chef erwischen! ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Ich habe dein eigentliches Problem noch nicht so recht erfasst.
    Du hast nen Ordner... (ist der fix?! oder immer anders?)
    In dem liegen Dateien (PDF und DOCX?!) und du willst jetzt was damit machen?
    Ich habe noch nicht verstanden wo da irgendetwas mit nem SQL Server passieren soll.

    Für mich hört sich das an nach:
    Irgendwo ist nen Ordner... von da sollen Dateien geöffnet werden können. Wieso dann keine einfache Freigabe auf den Ordner?
    Oder soll der Server die Daten dann "bereitstellen" wenn der Anwender sie haben will? Quasi als Datenpumpe... und der Anwender selber soll gar keinen Zugriff auf den Ordner selbst haben?
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Es gibt einen Ordner, da Liegen diese Dateien ( im Moment noch DOCX, spaeter sollen es nur noch PDF sein).
    Diese Dateien sollen ueber den Webbrowser im Intranet fuer alle, die sich im Intranet befinden, verfuegbar gemacht werden.

    Zur SQL-Anwendung, sie die ID, den Titel, das Datum wann die Datei "online" gestellt wurde und wie lange die Datei gueltig ist speichern.
    Das soll alles ueber ein Userinterface geregelt werden, wo der User (nur berechtigte, das wird ueber eienen Login geregelt) die Datei
    auswaehlen kann und der Datei in Textboxen Anzeigename und Gueltigkeitsdatum mitteilen kann.
    Diese Angaben sollen dann in der Sql-DB gespeichert werden.

    Dann soll alles in einer Liste angezeigt werden und der Anzeigename soll als Link herhalten um bei Klick, die Datei (nur zum Lesen) zu oeffnen.

    Ich hoffe man versteht so einigermassen was ich meine ^^
    Na, gerade wenn es um Berechtigungen geht muss du eine Datenpumpe bauen, welche die Daten durch reicht... Sonst wird der User sicher schlau genug sein den Ordner ausfindig zu machen.
    Und wenn es um Gültigkeiten geht, wirst du auchnoch eine Versionierung einbauen müssen. Da wird das Ganze schon recht komplex.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Der user kann den Ordner ruhig ausfindig machen, wenn er keine Berechtigung hat dann kann er ja da auch nicht drauf zugreifen ;)

    Andererseits sind es auch keine empfindlichen Daten um die es geht, es sind, ich sage es mal so, Firmeninterne oeffentliche Daten,
    wo keiner Vorteile von hat wenn er diese Manipoliert.
    Eigentlich geht es hierbei nur um Infodatein.

    Mir geht es eigentlich nur darum, das man nacher in der angezeigten Liste auf die Eintraege klicken kann und sich dann die Datei oeffnet.