Autor Beitrag
krare
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Mo 16.05.11 21:08 
Hallo und willkommen hier im Forum!
user profile iconkrare hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconkrare hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 16.05.11 22:27 
user profile iconkrare hat folgendes geschrieben Zum zitierten Posting springen:
Das bedeutet doch ich muss da auch irgendwas mitgeben, damit der Zielrechner das auch nutzen kann.
Nur die Dlls :) .

_________________
>λ=
krare Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Fr 20.05.11 22:04 
Hallo,
user profile iconkrare hat folgendes geschrieben Zum zitierten Posting springen:
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.
user profile iconkrare hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Sa 21.05.11 07:56 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconkrare hat folgendes geschrieben Zum zitierten Posting springen:
Das bedeutet doch ich muss da auch irgendwas mitgeben, damit der Zielrechner das auch nutzen kann.
Nur die Dlls :) .
Bei Sql Compact sind es 7 dll's, die mitgeliefert werden müssen. Die Seite hier beschreibt, welche:
msdn.microsoft.com/d...983326(v=VS.90).aspx
LG
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19322
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 21.05.11 07:59 
user profile iconkrare hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 24.05.11 13:23 
user profile iconTrashkid2000 hat folgendes geschrieben Zum zitierten Posting springen:
...
msdn.microsoft.com/d...983326(v=VS.90).aspx
LG


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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Di 24.05.11 20:21 
Hallo,
user profile iconkrare hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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 :autsch: .
Jetzt mag mein Programm die Datenbank öffnen, kommt aber dann mit einer Fehlermeldung, die ich nicht verstehe (nächstes Problem also :cry: ).

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19322
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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