c# - 为什么我无法从我的 NPGSQL 服务器获取数据?
问题描述
我需要编写一个 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 数据表中,但我无法让它工作。数据表只是空的。
解决方案
如果您将代码重构为如下所示的内容会怎样。
using 语句将保证您的连接和命令在超出范围时关闭/处置,并且使用 try/catch 块您将捕获任何异常并通过消息框将其报告给 UI。如果有任何异常,这将有助于捕获异常。
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();
}
}
推荐阅读
- python - 用于 selenium 浏览器自动化的 Flask Web 应用程序输入
- java - 使用媒体投影android studio截屏的问题
- c# - 实体框架依赖加载
- java - 如何使用 JFormDesigner 填写表格
- weblogic - 带有 nullpointerexception 的 weblogic ear 部署错误
- ios - Swift - 如何获取按钮标题标签的中心框架而不是按钮本身
- pyspark - 跨列和 pyspark 组合值并进行旋转
- android - 使用导航组件导航到自我时如何显示后退按钮?
- c++ - 从另一个应用程序访问 lua_State
- python - 在python中绘制多个Y轴+“色调”散点图