gpt4 book ai didi

mysql - 如何使 OleDB 查询读取冒号 :

转载 作者:行者123 更新时间:2023-11-29 06:42:10 25 4
gpt4 key购买 nike

我正在开发一个 GPS 应用程序,我需要解析发送到该应用程序的分解字符串。
但是,OleDB 中的 SQL 查询无法将 : 识别为字符。 - 我认为这是错误的

我在我的 .accdb 上添加了一个字段 Time,数据类型为文本...

04T16:18:42Z

那是 gps 发送的时间数据..
但是如果我通过它使用它,我会得到语法错误(我只是把它写得很短,我使用 vb.net)-
插入 myTable(Time) 值 ('"& txtTime.Text & "')
那是我使用的查询。昨天发错了,看来,就是那条数据导致的语法错误。
我应该怎么做才能让它发挥作用?或者也许做一些改变它的时间格式、拆分、重写的事情?我的主要目标是将其保存到数据库中。谢谢

更新:这是我保存的代码,你能用parameters重新安排一下吗--

query = "INSERT INTO tblGPSRoutes(Time,Latitude,Longitude,Elevation,Accuracy,Bearing,Speed)"
query &= " VALUES ('" & txtTime.Text & "','" & txtLat.Text & "','" & txtLong.Text & "','" & txtElev.Text & "','" & txtAccuracy.Text & "','" & txtBearing.Text & "','" & txtSpeed.Text & "')"


databaseFunctions.ExecuteQuery(query)
MessageBox.Show("Data Saved Successfully.")

UPDATE2:现在我正在使用参数:

Dim con As OleDbConnection
con = New OleDbConnection
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " & Path.Combine(Application.StartupPath, "markers.accdb")
con.Open()
Dim query As String = "INSERT INTO tblGPSRoutes(Latitude,Longitude,Elevation,Accuracy,Bearing,Speed) VALUES (@lat,@long,@elev,@acc,@bearing,@speed)"
Using cmd As New OleDbCommand(query, con)
With cmd.Parameters
'.AddWithValue("@time", txtTime.Text)'
.AddWithValue("@lat", txtLat.Text)
.AddWithValue("@long", txtLong.Text)
.AddWithValue("@elev", txtElev.Text)
.AddWithValue("@acc", txtAccuracy.Text)
.AddWithValue("@bearing", txtBearing.Text)
.AddWithValue("@speed", txtSpeed.Text)
End With
cmd.ExecuteNonQuery()
End Using

首先说,语法错误.. 然后我删除了 time 数据输入。然后就可以了。

最佳答案

Time 是 Access 中的保留字。所以你不能将它用作列名。(我在示例中将其更改为 MyTime

将一些应用程序的变量添加到 SQL 查询时使用参数。
然后你避免SQL injections以及在字符串值中使用特殊字符时的一些错误

Dim query As String = "insert into myTable(MyTime, Latitude) values (@TextTime, @Latitude)"
//Then create parameters for your databaseFunctions's functions
Dim parameters As New List(Of OleDbParameters)()
With parameters
.Add(New OleDbParameter("@TextTime", txtTime.Text))
.Add(New OleDbParameter("@Latitude", txtLat.Text))
End With
databaseFunctions.ExecuteQuery(query, parameters.ToArray())
MessageBox.Show("Data Saved Successfully.")

但随后您需要添加/更改您的databaseFunctions.ExecuteQuery(query) - 接受两个参数的函数

Public Sub ExecuteQuery(query As String, params As OleDbParameters())
//Here add parameters to OleDbCommand object and execute command
End Sub

关于mysql - 如何使 OleDB 查询读取冒号 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20810599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com