Autor |
Beitrag |
krare
Hält's aus hier
Beiträge: 7
|
Verfasst: Mo 16.05.11 15:55
Erstmal ein freundliches HALLO an alle! Ich bin der neue und werd jetzt öfter nerven...
Ich veruche mich gerade in der Welt von C# zurechtzufinden. Hab mal C++/CLI geamcht. Finde mich aber in der PHP Welt besser zurecht...
Jetzt aber mal zur Frage.
Ich habe hier einen SQL Server (Express) stehen und eine kleine Anwendung geschrieben. Diese Anwendung will ich jetzt auf einem anderen Rechner installieren, der nicht auf den Server zugreifen kann/soll. Ohne diesen gleich zum Server machen zu müssen, muss ich das SQL Redistibutable mit installieren. Soweit richtig?
Falls ja, was ist mit meinem ConnectionString. Ist das dann auch "Server=.\\SQLEXPRESS; Database=xy; Trusted_Connection=yes;"? Oder muss ich da was anderes machen?
Wie ihr seht bin ich diesbezüglich etwas ratlos...
Schon mal vielen Dank für eure Hilfe!
|
|
Trashkid2000
      
Beiträge: 561
Erhaltene Danke: 137
|
Verfasst: Mo 16.05.11 21:08
Hallo und willkommen hier im Forum!
krare hat folgendes geschrieben : | Ich habe hier einen SQL Server (Express) stehen und eine kleine Anwendung geschrieben. Diese Anwendung will ich jetzt auf einem anderen Rechner installieren, der nicht auf den Server zugreifen kann/soll. Ohne diesen gleich zum Server machen zu müssen, muss ich das SQL Redistibutable mit installieren. Soweit richtig? |
Gute Frage, denke, dass das Paket einfach einen Sql-Server installiert!? Aber so genau weiss ich das nun auch nicht.
krare hat folgendes geschrieben : | Falls ja, was ist mit meinem ConnectionString. Ist das dann auch "Server=.\\SQLEXPRESS; Database=xy; Trusted_Connection=yes;"? Oder muss ich da was anderes machen? |
Naja, wenn ich einen Sql-Server aufsetze habe ich die Möglichkeit, die Instanz einen Namen zu geben. Standard ist halt "SQLEXPRESS" bei einem Express-Server. Aber ich kann ihn auch umbenennen. Und bei einem "richtigen" Server ist es standardmäßig "SQLSERVER".
Naja, je nach Situation kannst Du Dich nicht auf den ConnectionString verlassen. Und ob auch immer der Name der Datebank gleich ist, ist auch so eine Frage. Also gebe dem Anwender wenigstens die Möglichkeit, den ConnectionString zu modifizieren.
Aber mal was anders: Du schreibst, dass es eine kleine Anwendung ist. Dann realisiere das doch lieber mit einer Compakt-Datenbank (Sql CE, SqLite...). Oder in Form von Dateien (Xml..). Denn ich würde es als Anwender nicht gerade toll finden, wenn ich wegen einer einzelnden, kleinen Anwendung einen Server laufen haben müsste.
LG,
|
|
krare 
Hält's aus hier
Beiträge: 7
|
Verfasst: Mo 16.05.11 21:46
Hi,
ich würde ja ne "abgespeckte" Version nehmen. Die Datenbank auf dem Server sollte auch nur zum Testen sein. Und weil ich ja eben nicht möchte, dass jeder der mein Programm nutzen möchte, einen "Server aus seinem PC macht" frag ich mich wie das geht. Über XML hatte ich auch schon nachgedacht. Aber ich weiß nicht ob da die Datenmenge nicht zu groß werden...
Ich frag mich halt wie die anderen das machen. Wenn ich mir ne Freeware aus dem Netz ziehe müssen ja auch Daten weggeschrieben werden. Ich musste aber noch nie nen Server installieren. Läuft das dann immer über XML? Wie geht das denn mit z.B. SQL - Compact? Das simuliert mir doch nen Server oder? Das bedeutet doch ich muss da auch irgendwas mitgeben, damit der Zielrechner das auch nutzen kann.
Mmmmhhh. Irgendwie steh ich grad auf dem Schlauch. Naja. Erstmal Feierabend machen und schlafen gehen. Dann schaun mer mal weiter...
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mo 16.05.11 22:27
krare hat folgendes geschrieben : | Das bedeutet doch ich muss da auch irgendwas mitgeben, damit der Zielrechner das auch nutzen kann. |
Nur die Dlls  .
_________________ >λ=
|
|
krare 
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 17.05.11 15:33
Mag jetzt blöd klingen, aber damit habe ich mich noch nie beschäftigt. Wie bekomme ich raus welche dll ich wohin legen muss?
Und was muss ich dann machen um die .mdf einzubinden. Ein Tutorial wäre glaub ich nicht schlecht... Aber ich find kein geeignetes...
|
|
krare 
Hält's aus hier
Beiträge: 7
|
Verfasst: Fr 20.05.11 13:29
Irgendwie bin ich zu dämlich. Ich habe jetzt gelernt, dass ich meinem Programm die libmysql.dll mitgebe. OK. Aber wie sag ich meinem Programm, dass es nicht auf einen Server zugreift, sondern diese .dll nutzt? Ich war der Meinung, dass dies über den ConnectionString geschieht. Aber ich kann dazu nix finden. Kann mir da jemand helfen?
|
|
Trashkid2000
      
Beiträge: 561
Erhaltene Danke: 137
|
Verfasst: Fr 20.05.11 22:04
Hallo,
krare hat folgendes geschrieben : | Irgendwie bin ich zu dämlich. |
Nicht gleich den Kopf in den Sand stecken, bloß weil etwas nicht gleich auf Anhieb klappt.
Ich frage mich, was Du mit der libmysql.dll willst. Denn diese ist ja für den MySql-Server (auch wenn ich von dieser Bibliothek noch nie was gehört habe, sondern nur von der MySql.Data.dll). Und das setzt also auch ein (MySql-)Server heraus.
Wenn Du einen Provider benutzt, der nicht standardmäßig im Framework enthalten ist, so musst Du auf jeden Fall die dll des Connectors einbinden (schon deshalb, weil C# sonst die Klassen einfach mal nicht kennt). Und diese dann natürlich beim publishen mitreichen.
krare hat folgendes geschrieben : | Aber wie sag ich meinem Programm, dass es nicht auf einen Server zugreift, sondern diese .dll nutzt? Ich war der Meinung, dass dies über den ConnectionString geschieht. |
Der ConnectionString muss schon zun DB-Provider passen. Und da die erzeugten Objekte ja von der eingebundenen Dll kommen, wird diese natürlich auch benutzt.
Aber Du wolltest doch eigentlich ganz auf einen Server verzichten, und lieber auf eine kompakte Datenkank umsteigen, oder habe ich das falsch gedeutet?
LG
|
|
Trashkid2000
      
Beiträge: 561
Erhaltene Danke: 137
|
Verfasst: Sa 21.05.11 07:56
|
|
jaenicke
      
Beiträge: 19322
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 21.05.11 07:59
krare hat folgendes geschrieben : | Ich habe jetzt gelernt, dass ich meinem Programm die libmysql.dll mitgebe. |
Abgesehen davon, dass die wie der Name schon sagt für MySQL ist, ist diese DLL nicht für .NET gedacht. (Auch wenn du die theoretisch natürlich einbinden kannst.)
|
|
krare 
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 24.05.11 13:23
Danke für die Hinweise. Ich bin bei der libmysql.dll davon ausgegangen, dass diese einene MySqlServer simuliert. Ich hatte gelesen, dass man nur diese mitgeben muss und sonst nix. Aber gut. War wohl nix...
Der Link hat mir auf jeden Fall geholfen. Hier das ist allerdings mein Problem:
msdn hat folgendes geschrieben: | Da sich die SqlServerCe-DLLs im globalen Assemblycache des Entwicklungscomputers befinden, müssen Sie die Anwendung zur Verwendung der DLLs im Ausgabeverzeichnis konfigurieren. |
Ich war der Meinung, dass dies über den ConnectionString geregelt wird. In etwa so:
"Server=SQLSERVER.CE; Data Source=E:\\..."
Scheinbar habe ich da mal wieder was falsch verstanden...
Laut "ConnectionStrings.com" soll das auch "Provider" heißen. Nur bekomme ich dann die Meldung, dass dieses Schlüsselwort nicht unterstützt wird...
|
|
Trashkid2000
      
Beiträge: 561
Erhaltene Danke: 137
|
Verfasst: Di 24.05.11 20:21
Hallo,
krare hat folgendes geschrieben : | Laut "ConnectionStrings.com" soll das auch "Provider" heißen. Nur bekomme ich dann die Meldung, dass dieses Schlüsselwort nicht unterstützt wird... |
Also wenn ich mir unter www.connectionstring...m/sql-server-2005-ce die ConnectionStrings anschaue (jedenfalls für den Namespace "System.Data.SqlServerCe", alos ganz oben auf der Seite) gibt es dort keine Angabe des Providers.
Vielleicht wäre es ganz hilfreich, wenn Du mal posten würdest, wie Du versuchst, auf die Datenbank zuzugreifen. Also direkt mit den Klassen (SqlCeConnection..., ...) oder über einen O/R-Mapper. Poste doch mal ein wenig Code.
LG
Für diesen Beitrag haben gedankt: krare
|
|
krare 
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 25.05.11 09:37
Hallo,
ich war mal wieder nur zu doof. Hatte die System.Data.SqlClient genutzt statt der System.Data.SqlServerCe. Manchmal ist es zu einfach um den Fehler zu finden  .
Jetzt mag mein Programm die Datenbank öffnen, kommt aber dann mit einer Fehlermeldung, die ich nicht verstehe (nächstes Problem also  ).
Vielleicht wisst ihr / weist du ja was das heist. Im Netz hab ich noch nicht viel gefunden (hab aber auch noch nicht richtig gesucht...).
Hier die Meldung:
Zitat: | Der Spaltenname ist ungültig. [ Node name (if any) = ,Column name = test ] |
Konkrete Frage:
Was bedeutet "Node name (if any) = "? Übersetzen kann ich das. Aber ich weiß nicht was ich damit anfangen soll. Wo soll ich suchen? Was für ein Knoten soll das sein?
Gruß
|
|
Trashkid2000
      
Beiträge: 561
Erhaltene Danke: 137
|
Verfasst: Mi 25.05.11 20:05
Zitat: | Der Spaltenname ist ungültig. [ Node name (if any) = ,Column name = test ] |
Das deutet ja eigentlich auf ein falsches SQL-Statement hin.
Wie sieht Dein Statement denn aus?
Für diesen Beitrag haben gedankt: krare
|
|
jaenicke
      
Beiträge: 19322
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 25.05.11 20:08
Die Meldung heißt für mich, dass eine Spalte test in dem Statement angesprochen wird, aber nicht in der Datenbank gefunden wird.
Das "if any" soll vermutlich heißen, dass "Node name" nur relevant ist, wenn dort etwas stehen würde, und das Interessante in "Column name" steht.
Für diesen Beitrag haben gedankt: krare
|
|
krare 
Hält's aus hier
Beiträge: 7
|
Verfasst: Do 26.05.11 11:51
Hallo Leute,
habs raus. Es läuft jetzt. Nachdem ich den Spaltenname gefühlte 500 mal auf Rechtschreibfehler in der DB und im Programm geprüft und nichts gefunden habe, habe ich die Bezeichnung aus der DB in das Programm kopiert. Jetzt funktionierts. Scheinbar hatte ich es tierisch auf den Augen...
Naja. Auf jeden Fall VIELEN DANK für eure Mühe und Geduld.
Gruß
krare
|
|