簡體   English   中英

在 C# 中連接到 tableau postgresql

[英]connect to tableau postgresql in C#

我想從我的 .Net 框架連接到 tableau PostgreSQL 服務器以列​​出在 tableau 服務器中發布的所有報告和數據源。

為此,我完成了以下步驟。

  1. 添加了我在線下載的 npgsql.dll 引用
  2. 在我的類文件中添加了以下兩個命名空間

    使用 NpgsqlTypes; 使用 Npgsql;

  3. 我添加了連接刺如下

我還嘗試使用端口值修改連接字符串並將數據源重命名為服務器,將初始目錄重命名為數據庫並將提供程序名稱重命名為 Npgsqll

  1. 我的方法如下:

     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; }`
  2. 沒有錯誤。 我可以成功構建並運行網站中的其他鏈接。 但無法與我的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM