keine Verbindung zu meinem Server...

hallo,
Ich brauche nur die clint Funktion für Visual Studio 2015.(c#)
dist.nuget.org/index.html <-- reicht das aus, wenn ich eine Anwendung schreiben möchte die auf einen Postgresql zugreifen soll?

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 wird User/Pass/Server bekomme ich nach verbinden folgendes
Fehlermeldung: tomycat.de/sql.jpg
Mit dem Client Laptop kann ich mit Telnet auf den Postgresql Laptop zugreiden, bzw Telnet reagiert darauf.

Firewall ist ausgeschaltet.

leider scheint die Fehlermeldung geheim zu sein. Lauscht PG am Port?

ich versehe nicht, wieso geheim.
Lauscht PG am Port? <---- ähhhh
Ich will einfach einen Verbindung zu meinem Postgresql Server (1m neben mir ) aufbauen.
Jedes c# Test Programm für Postgresql wäre mich recht. Wenn das klappt kann ich mich Schritt für Schritt nach vorne arbeiten.

Geheim, weil nicht sichtbar hier. Oder ich hab es übersehen.

Damit Du via Netzwerk auf PG zugreifen kann muß es am Port 5432/TCP lauschen. Auf Linux-Systemen ist per Default dies NICHT der Fall, Du mußt das in der postgresql.conf expliziet einschalten.

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:


Welche .conf muss ich anpassen?

Also, ganz ruhig.

Der DB-Server, ist das ein Linux? Was sagt da ‘netstat -tulpen | grep 5432’ ? Wes genau hast Du in der pg_hba.conf geändert? Es gibt Regeln für lokalen und für remote Zugriff. Um remote Zugriff zu erlauben mußt Du da passende Regeln erstellen.

Dein “Insert from simple_table testkram 1” ist syntaktischer Bullshit. Ich kann nicht einmal ansatzweise erraten, was Du bezwecken willst.

zu.1
Windows 7 nutze ich. Wie gesagt, ich bekomme eine reaktion von Telnet. In pg_hba.conf habe ich nur 2x den Eintrag md5 auf trust geändert, mehr nicht.

zu.2
Idee: Ich erstelle mit pgAdmin eine Tabelle simple_table mit der Spalte testkram. Jetzt möchte ich meine Code (siehe oben) von

string sql = "SELECT * FROM simple_table";

… auf …

string sql = "INSERT INTO simple_table" VALUES   ('testkram', '1'");

…ändern. Dass das c# Prog den Wert 1 in die Tabelle schreibt.

Irgendwie sieht das SQL schrottig aus.

insert into simpletable (testkram) values(1);

Gruß uwe

1.ok, neuer Ansatz:

	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 );
                			
			    NpgsqlConnection conn = new NpgsqlConnection(connstring);
				conn.Open();
                NpgsqlCommand command = new NpgsqlCommand("INSERT INTO kunden(anrede, firma, titel) VALUES('12', 'Oberhemd', '39.80'", conn);

                conn.Close();

keine Fehlermeldung, aber die Tabelle blaibt leer :frowning:

Du redest den Kunden mit ‘12’ an, die Firme heißt ‘Oberhemd’ und der Titel ‘39.80’? Ungewöhnlich.

Davon abgesehen sehe ich keine Stelle im Code, wo auf Fehler eingegangen wird und diese angezeigt werden. Steht was im Log? Was?

Übers Netzwerk gehts jetzt auch, die Lösung:
die Datei: pg_hda.conf:
host all all 0.0.0.0/0 trust

das andere Problem, hier die Lösung:

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();
            tbHost.Text = "192.168.178.111";
            tbPort.Text = "5432";
            tbUser.Text = "postgres";
            tbPass.Text = "";
            tbDataBaseName.Text = "Felkass";
        }
        private void llOpenConnAndSelect_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            try
            {

                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);

                NpgsqlConnection conn = new NpgsqlConnection(connstring);
                conn.Open();
                NpgsqlCommand command = new NpgsqlCommand("INSERT INTO kunden(kundennr, hausnummer, firma, titel) VALUES(311,44,43,43); ", conn);
               command.ExecuteNonQuery();
                conn.Close();
            }
            catch (Exception msg)
            {
                // something went wrong, and you wanna know why
                MessageBox.Show(msg.ToString());
                throw;
            }
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }
    }
}

Du bist einherzensguter Mensch, Du vertraust der ganzen Welt:

host all all 0.0.0.0/0 trust

Friede sei mit Dir :wink:

Ich vermute, du mußt ein COMMIT hinterherschicken. Oder bei den Verbindungseinstellungen sowas wie autocommit=True setzen.

Schön Sonntach noch

Uwe

@Gismann
es lang an:
command.ExecuteNonQuery();
ich habe es herausgegooelt

@akretschmer
Prog läuft nur local :slight_smile: