首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的问题对吗?需要help...there总是一个错误

我的问题对吗?需要help...there总是一个错误
EN

Stack Overflow用户
提问于 2013-08-11 09:12:05
回答 2查看 453关注 0票数 0

我正在VB 2012中做一些练习,我已经将它连接到microsoft 2013中的数据库。当我运行它时,Select Trans_date from [Transaction] where Trans_date = SYSDATE中有一个错误

这是我的密码。

代码语言:javascript
复制
Imports System.Data
Imports System.Data.OleDb
Imports System.Data.Odbc
Imports System.Data.DataTable

Public Class Form1

Dim provider As String
Dim dataFile As String
Dim connString As String
Dim myConnection As OleDbConnection = New OleDbConnection
Dim ds As DataSet = New DataSet
Dim da As OleDbDataAdapter
Dim tables As DataTableCollection = ds.Tables

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    provider = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="
    dataFile = "C:\Users\hp-2\Documents\Visual Studio 2012\Projects\Delta\Delta.mdb"

    connString = provider & dataFile
    myConnection.ConnectionString = connString
     da = New OleDbDataAdapter("Select Trans_date from [Transaction] where Trans_date = SYSDATE" 
    & t_date.Text & "'", myConnection)
    da.Fill(ds, "Transaction")

    Dim view1 As New DataView(tables(0))
    Dim source1 As New BindingSource()
    source1.DataSource = view1
    showdata.DataSource = view1
    showdata.Refresh()
   End Sub

  Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

  End Sub
  End Class

这是我的错误..。

代码语言:javascript
复制
An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll

Additional information: Syntax error in string in query expression 'Trans_date = SYSDATE''.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-11 12:02:28

尝试使用Date()而不是SYSDATE

票数 2
EN

Stack Overflow用户

发布于 2013-08-11 11:58:46

您应该使用参数化查询。作为一个例子

代码语言:javascript
复制
Dim query = "Select Trans_date from [Transaction] " & _
            "where Trans_date = ?" 
da = New OleDbDataAdapter(query, myConnection)
da.SelectCommand.Parameters.AddWithValue("@p1", DateTime.Today)
da.Fill(ds, "Transaction")

在这里,框架将使用查询文本中的占位符?以及添加到SelectCommand集合的参数来构建传递给底层数据库引擎的正确查询。

OleDb中,参数不被特定的名称所识别(就像其他网络数据库驱动程序一样),而只通过它们在查询文本中的位置来识别。所以第一个占位符(?)与第一个参数(@p1)相关联,其值被格式化并传递给MSAccess引擎。

使用参数传递文本命令是最重要的。您不必担心如何格式化日期、字符串和十进制数字。而且(在MSAccess中不太可能,但总是有可能),您不会编写暴露在Sql Injections中的代码

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18170421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档