2014-12-26 33 views
0

我想執行我的postgres函數在VBNet中有日期作爲參數,並在datagridview.Below中顯示結果我的代碼請告訴我我錯在哪裏。我想我寫錯誤的命令來執行function.I知道這可能是錯誤的方式,但我第一次使用Postgres的功能VBNet在VBNet中執行Postgres函數

Imports Npgsql 
 
Public Class Form1 
 
    Dim connstring As String = String.Format("Server=127.0.0.1;Port=5432;" + 
 
    "Username=xxxx;Password=xxxx;Database=EMS_Demo_db;") 
 
    Dim conn As NpgsqlConnection = New NpgsqlConnection(connstring) 
 
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
 
     Try 
 
      conn.Open() 
 
      Dim Command As NpgsqlCommand = New NpgsqlCommand("SELECT * FROM lastsevendays_sp ' + DateTimePicker1.Value + '", conn) 
 
      Dim reader As NpgsqlDataReader = Command.ExecuteReader() 
 
      Dim data_Table1 As New DataTable 
 
      data_Table1.Load(reader) 
 
      DataGridView1.DataSource = data_Table1 
 
      reader.Close() 
 
      conn.Close() 
 
     Catch ex As Exception 
 
      MsgBox(ex.ToString) 
 
     End Try 
 
    End Sub 
 
End Class

+0

'lastsevendays_sp'是存儲過程正確? –

+0

是的這是一個存儲過程 – Parth

+0

什麼是日期參數的名稱? –

回答

0

你錯過了一個括號 - 括號中的PostgreSQL的SQL是強制性的:

應該是:

 
Dim Command As NpgsqlCommand = New NpgsqlCommand("SELECT * FROM lastsevendays_sp(' + DateTimePicker1.Value + ')", conn) 

我不是一個.NET專家,所以我不知道真正的解決方案,但存在兩個風險:

  • SQL注入 - DateTimePicker1.Value不消毒!
  • 意外的格式 - 的Postgres理解爲ANSI格式以及(YYYY-MM-DD)
+0

謝謝添加括號爲我工作 – Parth