我正在开发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
数据输入。那就行了。
答案 0 :(得分:2)
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