Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Mysql zu Postgesql...


tomycat - Mo 09.11.15 22:02
Titel: Mysql zu Postgesql...
hallo,
ich habe mich eingearbeit mit mysql in verbindung mit Visual Studo 2015.
Installer installiert und dann über Verweise mysql hinzugefügt.
Leider ist mysql sehr teuer, deshalb möchte ich gerne umsteigen auf Postgesql.

https://dist.nuget.org/index.html

NuGet für Visual Studio 2015 rutergeladen und installiert. Leider ist über Verweise nur mssql und mysql drin.
Ein C# Test Programm für postgesql habe ich auch schon. Leider kennt vs kein NpgsqlConnection ? Normal?


Ralf Jansen - Mo 09.11.15 22:50

Zitat:
Normal?


Kommt drauf an ;) Dein Link führt zu Nuget Installern nicht zu Nuget Packeten von Postgres die man über Nuget installieren könnte. Falscher Link?

Das wäre passender
https://www.nuget.org/packages/Npgsql/


tomycat - Di 10.11.15 21:42

ich glaube wir reden aneinander vorbei.
Ich brauche nur die clint Funktion für vs 2015.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Npgsql;

namespace PostgreSQLTEst
{
  public partial class Form1 : Form
  {
    private DataSet ds = new DataSet();
    private DataTable dt = new DataTable();
    public Form1()
    {  
      InitializeComponent();  
    }
    private void llOpenConnAndSelect_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
      try
      {
        // PostgeSQL-style connection string
        string connstring = String.Format("Server={0};Port={1};User Id={2};Password={3};Database={4};",
          tbHost.Text, tbPort.Text, tbUser.Text, tbPass.Text, tbDataBaseName.Text );
        // Making connection with Npgsql provider
        NpgsqlConnection conn = new NpgsqlConnection(connstring);
        conn.Open();
        // quite complex sql statement
        string sql = "SELECT * FROM simple_table";
        // data adapter making request from our connection
        NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, conn);
        // i always reset DataSet before i do something with it.... i don't know why :-)
        ds.Reset();
        // filling DataSet with result from NpgsqlDataAdapter
        da.Fill(ds);
        // since it C# DataSet can handle multiple tables, we will select first
        dt = ds.Tables[0];
        // connect grid to DataTable
        dataGridView1.DataSource = dt;
        // since we only showing the result we don't need connection anymore
        conn.Close();
      }
      catch (Exception msg)
      {
        // something went wrong, and you wanna know why
        MessageBox.Show(msg.ToString());
        throw;
      }
    }
  }
}

Ich habe über verweise die Npgsql.dll hinzugefügt und NpgsqlConnection war nicht mehr rot unterstrichen.
Nach dem Ausfüllen von den Felder wir User/Pass/Server bekomme ich nach verbinden folgendes Fehlermeldung: http://tomycat.de/sql.jpg
Mit dem Client Laptop kann ich mit Telnet auf den Postgresql Laptop zugreiden, bzw Telnet reagiert darauf.

Moderiert von user profile iconTh69: Code- durch C#-Tags ersetzt


Ralf Jansen - Mi 11.11.15 13:41

Der Testcode ist nicht hübsch sollte aber funktionieren (zumindest der Teil bis zum öffnen der Verbindung der bei dir knallt).
Ist der ConnectionString denn korrekt? Da habe ich keinen Blick für. Ich habe mir aber mal den NpgsqlConnectionStringBuilder angeschaut der dir so einen Connection String zusammenbastelt und der würde von "Host" sprechen und nicht von "Server". Möglicherweise erlaubt dein Server auch nur eine verschlüsselte Verbindung oder du hast zwischen den Rechnern ein System das die Kommunikation kaput macht. Firewall, Proxy, AntiVirus etc.


tomycat - Mi 11.11.15 14:43

Die Firewall ist ausgeschaltet.
Der Virenscanner ist Antivir.
Ich habe die Standart Installation von Postgresql für den Server genommen.
Wo kann man die verschlüsselung abschalten, ansonsten schaue ich selber? :-)
Wenn du einen Postgresql Server hast, kannst du bitte den Code mal testen, er ist von Codeprocet.com


Ralf Jansen - Mi 11.11.15 15:10

Zitat:
Wo kann man die verschlüsselung abschalten, ansonsten schaue ich selber? :-)


Ich habe nur gesehen das man Verschlüsselung via ConnectionString [https://www.connectionstrings.com/npgsql/] für diese Verbindung einschalten kann.

Zitat:
Wenn du einen Postgresql Server hast, kannst du bitte den Code mal testen,


Nope. Ich mach hier reine Trockenübungen ;)


tomycat - Mi 11.11.15 21:40

hallo,
hab den Kopf nochmal freigemacht, und nochmal Schritt für Schritt neu angesetzt.
Den Code als Release kompiliert und auf den Server kopiert.
in der pg_hda.conf von md5 auf trust gesetzt. Dann den Laptop neugestartet.

Dann kommt eine Fehlermeldung dass er die simple_table nicht findet.
STIMMT !!!! ->>> string sql = "SELECT * FROM simple_table";
Ok, angelegt, dann kommt "Tabelle kann nicht ausgelesen werden." ->>>> dt = ds.Tables[0];

1.Frage:
Ich erstelle eine Spalte mit "testkram" mit pgAdmin. Meine Idee: Den String ändern in "Insert from simple_table testkram 1".
Geht das so einfach? Nur die Zahl 1 reinschreiben.

2.Frage:
Auf den Server habe ich die Firewall abgeschaltet.Clint Laptop: Mit Telnet 192.168.178.111 5432 wird cmd Schwarz und sind 2 Striche da. Aber ich bekomme immernoch die gleiche Meldung: http://tomycat.de/sql.jpg

Welche .conf muss ich anpassen?

Moderiert von user profile iconTh69: C#-Tags hinzugefügt