【发布时间】:2013-12-28 03:07:20
【问题描述】:
我正在开发一个 GPS 应用程序,我需要解析发送到应用程序的分解字符串。
但是,OleDB 中的 SQL 查询无法将 : 识别为字符。 - 我认为这是错误
我在我的 .accdb 中添加了一个字段 Time,并将文本作为数据类型...
04T16:18:42Z
这是 GPS 发送的时间数据。
但是如果我通过它使用它会出现语法错误(我只是把这个简短,我使用 vb.net)-insert into myTable(Time) values ('" & 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 数据输入。然后就可以了。
【问题讨论】:
-
使用
OleDbCommand的参数 -
为什么投反对票?您还可以通过将保留字括在 [] 中来使用保留字,例如 [time]。云郎:)