[英]connect to tableau postgresql in C#
我想從我的 .Net 框架連接到 tableau PostgreSQL 服務器以列出在 tableau 服務器中發布的所有報告和數據源。
為此,我完成了以下步驟。
在我的類文件中添加了以下兩個命名空間
使用 NpgsqlTypes; 使用 Npgsql;
我添加了連接刺如下
我還嘗試使用端口值修改連接字符串並將數據源重命名為服務器,將初始目錄重命名為數據庫並將提供程序名稱重命名為 Npgsqll
我的方法如下:
public DataTable getAllDataSourceNames() { DataTable dataSourceNames = new DataTable(); NpgsqlConnection conServer = new NpgsqlConnection(conString); conServer.Open(); string command = @"select * from datasources"; NpgsqlDataAdapter sqlcmd = new NpgsqlDataAdapter(command,conServer); sqlcmd.Fill(dataSourceNames); return dataSourceNames; }`
沒有錯誤。 我可以成功構建並運行網站中的其他鏈接。 但無法與我的 postgresql 服務器建立連接。
知道如何建立連接嗎?
在 c# 中使用 Postgres 連接:
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;
}
}
以下鏈接可能對您有所幫助: 在 C# .NET 應用程序中使用 PostgreSQL
簡短的回答——不,不知道出了什么問題。 您的代碼不會引起任何警鍾。
有點相關,它可能會有所幫助:我是帶有 Npgsql 的 Connection StringBuilder 的忠實粉絲。 下面是一個簡單的例子:
NpgsqlConnectionStringBuilder sb = new NpgsqlConnectionStringBuilder();
sb.ApplicationName = "Tableau " + Environment.GetEvironmentVariable("USERNAME");
sb.Host = "1.2.3.4";
sb.Port = 5432;
sb.Username = "foo";
sb.Password = "bar";
sb.Database = "postgres";
sb.Pooling = false;
sb.Timeout = 120;
conServer = new NpgsqlConnection(sb.ToString());
它消除了所有這些並使注入參數變得容易。 我強烈建議您添加ApplicationName
屬性,以便在監視會話時,您將知道誰是誰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.