2014-12-26 4 views
0

Я хочу выполнить функцию postgres, имеющую дату в качестве параметра в VBNet, и показать результат в datagridview.Below - это мой код. Пожалуйста, скажите мне, где я ошибаюсь. Я думаю, что пишу неправильную команду для выполнения function.I знаю, что это может быть неправильно, но я использую первую функцию времени Postgres в VBNetВыполнить функцию Postgres в VBNet

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

Смежные вопросы