字符串“ BDR_POST-BI(SCT”之后的右引号

时间:2018-09-26 06:12:00

标签: sql-server vb.net

我的存储过程之前可以正常运行。但是现在,当我尝试运行它时,我得到了以下错误消息:“消息105,级别15,状态1,第84行 字符串'BDR_POST-BI(SCT')后的引号引起来。 消息102,第15层,州1,第84行 'BDR_POST-BI(SCT'。“附近的语法不正确。”这是我的存储过程

require_once '../AutoLoader.php';

require '../app/views/student/List.php';

3 个答案:

答案 0 :(得分:1)

将数据插入数据库时​​,请考虑使用SQL parameters来避免SQL injection

cmd.Parameters.Add("@line", SqlDbType.VarChar).Value = line 

我还将考虑实施Using

  

有时,您的代码需要不受管的资源,例如文件句柄,COM包装程序或SQL连接。使用代码块可以保证在您的代码完成后,处置一个或多个此类资源。这使它们可供其他代码使用。

Using con As New SqlConnection(str),
      cmd As New SqlCommand("INSERT INTO table2 ([a], [roll], [c]) VALUES (1, 2, @line)", con)

    cmd.Parameters.Add("@line", SqlDbType.VarChar).Value = line

    con.Open()

    cmd.ExecuteNonQuery()
  End Using

我还将考虑遍历Using语句中的文件,以免一遍又一遍地创建SQL对象:

Using con As New SqlConnection(str),
      cmd As New SqlCommand("INSERT INTO table2 ([a], [roll], [c]) VALUES (1, 2, @line)", con)
    cmd.Parameters.Add("@line", SqlDbType.VarChar)

    con.Open()

        Using sr As New StreamReader(path)
            Do While sr.Peek() >= 0
                cmd.Parameters("@line").Value = sr.ReadLine
                cmd.ExecuteNonQuery()
            Loop
        End Using
    End Using
End Sub

此代码未经测试,我没有环境,但是它应该给您一些使用的东西。

答案 1 :(得分:0)

line的值是什么?

尝试

cmd = New SqlCommand("insert into table2 ([a], [roll],[c]) values (1, 2, '''" & line & "''')", con)

答案 2 :(得分:0)

一定要使用参数。检查数据库以获取正确的“ SqlDbType”

Dim cmd As New SqlCommand(("insert into table2 ([a], [roll],[c]) values (1, 2, @line);", con))
cmd.Parameters.Add("@line", SqlDbType.VarChar).Value = line