Почему я не могу получить данные с моего сервера NPGSQL? - PullRequest
0 голосов
/ 09 июля 2019

Мне нужно написать программу на C #, и она должна быть в состоянии управлять моими данными на моем сервере.У меня есть сервер NPGSQL, настроенный с таблицей данных, я могу записывать данные в нее, но я просто не могу прочитать данные во время работы программы. Что я делаю неправильно?

 public NpgsqlDataReader reader;
    public NpgsqlCommand InsertCommand = new NpgsqlCommand();
    public String sConnectionString;
    public Npgsql.NpgsqlConnection Conn;
    public void DataBaseOpen()
    {
        sConnectionString = "Server=192.168.1.100;Port=5432;Username=postgres;Password=admin;Database=analoginput;Pooling=false;MinPoolSize=1;MaxPoolSize=999;Timeout=15;";

    Conn = new Npgsql.NpgsqlConnection(sConnectionString);

    InsertCommand = Conn.CreateCommand();
    Conn.Open();
    }

  public void DataBaseClose()
        {
        Npgsql.NpgsqlConnection.ClearAllPools();
        Conn.Close();
        }

InsertCommand.CommandText = "Select * From public.sensorlog WHERE \"date\" > '2019.07.08.' And \"date\" < '2019.07.10.' order by Date asc;";
            System.Windows.MessageBox.Show(InsertCommand.CommandText);
            Npgsql.NpgsqlDataReader reader = InsertCommand.ExecuteReader();
            System.Data.DataTable CSV = new System.Data.DataTable();
            while (reader.Read())
            {
                CSV.Load(reader);
            }

Я хочу загрузить данные в таблицу данных CSV, но я просто не могу заставить ее работать.Данные просто пустые.

1 Ответ

0 голосов
/ 11 июля 2019

Что делать, если вы реорганизуете свой код примерно так, как показано ниже.

Оператор using гарантирует, что ваше соединение и команда будут закрыты / удалены, когда они выйдут из области видимости, а блок try / catch вы поймаетелюбые исключения и сообщить об этом в интерфейс через окно сообщения.Это поможет в захвате исключений, если они есть.

public Npgsql.NpgsqlConnection DatabaseOpen()
{
    var sConnectionString = "Server=192.168.1.100;Port=5432;Username=postgres;Password=xxx;Database=analoginput;Pooling=false;MinPoolSize=1;MaxPoolSize=999;Timeout=15;";

    var Conn = new Npgsql.NpgsqlConnection(sConnectionString);

    Conn.Open();

    return Conn;
}
public void Main()
{
    try
    {
        using (var conn = DatabaseOpen())
        {
            using (var InsertCommand = conn.CreateCommand())
            {
                InsertCommand.CommandText = "Select * From public.sensorlog WHERE \"date\" > '2019.07.08.' And \"date\" < '2019.07.10.' order by Date asc;";
                System.Windows.MessageBox.Show(InsertCommand.CommandText);
                Npgsql.NpgsqlDataReader reader = InsertCommand.ExecuteReader();
                System.Data.DataTable CSV = new System.Data.DataTable();
                while (reader.Read())
                {
                    CSV.Load(reader);
                }
            }
        }
    }
    catch (Exception ex)
    {
        System.Windows.MessageBox.Show(ex.Message);

    }
    finally
    {
        Npgsql.NpgsqlConnection.ClearAllPools();
    }
}
...