2014-06-05 71 views
0

我正在使用PostgreSQL數據庫與C#和Npgsql庫。如何從C#中的PostgreSQL獲取選定行的值?

現在,我可以選擇我的表中的最後一行,但我不知道如何分配一個C#變量。我知道我的選擇是有效的,因爲我之前已經成功編輯了我的最後一個條目。

你可以在下面找到我的代碼。請注意,我沒有粘貼其他方法,因爲我認爲它們無關緊要。

public void myMethod() 
{ 
    this.OpenConn(); //opens the connection 

    string sql = "SELECT id FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'customers' ORDER BY id DESC, LIMIT 1"; 

    using (NpgsqlCommand command = new NpgsqlCommand(sql, conn)) 
    { 
     int id = 0; //instead of '0' I want it to be equal to the ID value from the row 
     //something like "int id = sqlSelection.id;" -- this obviously doesn't work 

     this.CloseConn(); //close the current connection 
    } 
} 
+0

當您使用'int id = sqlSelection.id;'時會出錯嗎? –

+0

必須執行該命令才能執行提供的操作 – Gabe

回答

4

你可以通過使用特定的DataReader實現這一目標:

public void myMethod() 
{ 
    this.OpenConn(); //opens the connection 

    string sql = "SELECT id FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'customers' ORDER BY id DESC, LIMIT 1"; 

    using (NpgsqlCommand command = new NpgsqlCommand(sql, conn)) 
    { 
     int val; 
     NpgsqlDataReader reader = command.ExecuteReader(); 
     while(reader.Read()){ 
      val = Int32.Parse(reader[0].ToString()); 
      //do whatever you like 
     } 

     this.CloseConn(); //close the current connection 
    } 
} 

有用的筆記

+0

稍微注意一下,而不是使用parse,tostring您可以直接調用方法.GetInt(columnindex)http://msdn.microsoft.com/zh-cn/我們/庫/ system.data.sqlclient.sqldatareader.getint32(v = vs.110)的.aspx –

0

也可以使用以下代碼變體;

using (var command = new NpgsqlCommand(sql, conn)) 
{ 
     int id = 0; 
     var reader = command.ExecuteReader(); 
     while(reader.Read()) 
     { 
      var id = Int32.Parse(reader["id"].ToString()); 
     } 
     this.CloseConn(); 
} 
相關問題