我正在尝试在vb.net中使用sql查询插入数据,如下所示。名称= corp int’l poc = 1
当我尝试插入时,出现错误(“字符串’“之后的未封闭的引号)。当我尝试仅用1个单引号插入名称时,就会发生这种情况。
因此,我添加了一个replace函数,以将2个单引号替换为1个单引号来转义符号。没有错误,但是当我查看数据库时,添加了2个单引号而不是1个。
谁能告诉我如何通过参数化查询来避免使用单引号?谢谢!
Public Function InsertData(ds As DataSet) As Boolean
Dim cmd As New SqlCommand
Dim cmd1 As New SqlCommand
Dim status As Boolean
Dim name As String
Dim poc As String
Dim id_p As New SqlParameter("id", SqlDbType.VarChar)
Dim name_p As New SqlParameter("name", SqlDbType.VarChar)
cmd.Parameters.Add(id_p)
cmd.Parameters.Add(name_p)
For i = 0 To ds.Tables(0).Rows.Count - 1
If checkExists(ds.Tables(0).Rows(i)(1).ToString(), ds.Tables(0).Rows(i)(2).ToString(), ds.Tables(0).Rows(i)(3).ToString()) = True Then
name = ds.Tables(0).Rows(i)(1).ToString()
poc = ds.Tables(0).Rows(i)(2).ToString()
If name.Contains("'") Then
name = name.Replace("'", "''")
End If
If poc.Contains("'") Then
poc = poc.Replace("'", "'")
End If
name_p.SqlValue = name
id_p.SqlValue = poc
cmd.CommandText = "INSERT INTO Code (Name,ID)" _
& " VALUES (@name,@id)"
status = ExecuteNonQuerybySQLCommand(cmd)
End If
Next
Return status
End Function
Dim strcon As String = "Data Source=x.x.x.x,1433;Network Library=DBMSSOCN;Initial Catalog=code_DB;User ID=xxx;Password=xxx;"
Public Function ExecuteNonQuerybySQLCommand(ByVal cmd As SqlCommand) As Boolean
Dim sqlcon As New SqlConnection
Dim i As Integer = 0
sqlcon.ConnectionString = strcon
cmd.Connection = sqlcon
Try
sqlcon.Open()
i = cmd.ExecuteNonQuery()
sqlcon.Close()
If i > 0 Then
Return True
Else
Return False
End If
Catch ex As Exception
Console.Write(ex)
Return False
End Try
End Function
问题内容: 我正在使用CodeIgniter将一些数据插入MySQL表中。因为我正在使用并且不想编辑活动记录类以启用此功能,所以我正在手动生成SQL查询。 问题: 当字符串中包含单引号时,查询失败。如何使这些需要转义的字符自动转义,例如使用活动记录时? 问题答案: 另一种方法是使用查询绑定,该绑定会自动转义所有值:
问题内容: 我有一个存储在列表中的关键字列表。 要从表中获取记录,请使用以下查询: 您可能已经注意到,我的查询容易受到sql注入的攻击,因此我想通过SqlCommand()使用参数。我已经尝试了以下方法,但仍然无法正常工作: 我在哪里犯错,或者应该怎么做? 问题答案: 您在这里做错了几件事: 您为所有参数赋予相同的名称。那行不通。参数需要唯一的名称。 您为每个项目创建一个新的SqlCommand。
问题内容: 我一直在试图弄清楚为什么以下代码未在我的ResultSet中生成任何数据: 另一方面,以下各项可以正常运行: SCHOOL的数据类型为CHAR(9字节)。除了setString,我还尝试了: 我完全留意接下来要研究什么;Eclipse调试器说,即使在setString或setCharacterStream之后,SQL查询也不会更改。我不确定这是因为设置参数不起作用,还是调试器根本无法在
问题内容: 我使用的是codeigniter,大多数时候都使用活动记录进行查询(这会自动使它们转义),但是由于变量的原因,该查询似乎不太适合它。因此,我需要弄清楚如何手动转义查询。 Codeigniter文档建议以这种方式转义查询: 我的原始查询 我逃脱的查询 但是我在正确使用语法上遇到了麻烦。错误消息是: PHP错误消息:未定义的变量:user_language SQL错误:语法错误…在第1行的
问题内容: 我正在尝试将一些文本数据放入9中的表中。 文本包含一个单引号(’)。 我该如何逃避呢? 我尝试使用两个单引号,但是这给我带来了一些错误。 例如。 问题答案: *就像您在示例中向我们展示的一样, *通过将单引号加倍将其转义 。以下SQL说明了此功能。我在SQL Server 2008上对其进行了测试: 结果
问题内容: 我有一个要在Java中运行的查询: 它可以让我的应用程序连接并使用与论坛相同的用户名/密码。 它的工作,但当包含字符时会给出错误: 我将如何用Java编写此查询来满足’(如果存在)而不是(如果不存在)? 问候。 问题答案: 如果我遵循您的问题,那么您可以使用类似的方法- 另一种可能的解决方案是在Java中执行哈希和盐运算- 最后,我不会在2014年使用MD5。我更喜欢SHA-256。