【问题标题】:SqlDataBase Error. Insert Statement not WorkingSqlDataBase 错误。插入语句不起作用
【发布时间】:2016-03-10 17:25:33
【问题描述】:

我实际上遇到了我的数据库访问问题。我无法连接到我的 SQL 数据库。错误是

INSERT INTO 语句中的语法错误

我已经尝试了所有方法,但我只需要帮助。这是我的代码:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    SqlDataSource1.InsertCommand = "INSERT INTO Information Page (RName, RCountry) VALUES ('" & TextBox1.Text & "', '" & TextBox2.Text & "')"
    Label4.Text = DateTime.Now.ToString("dd MMMM yyyy  h:mm")
End Sub

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    TextBox1.Text = " "
    TextBox2.Text = " "
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
    name = TextBox1.Text
    country = TextBox2.Text
    SqlDataSource1.Insert()
    Response.Redirect("http://localhost:49179/WebForm1.aspx")
End Sub

【问题讨论】:

  • 您没有指定您使用的 SQL 版本,但是,您当前的查询无效,因为您的表名中有空格。如果您使用 MySQL,则需要使用反引号:`Information Page` 或者如果您使用 Microsoft SQL Server,则需要使用方括号 [Information Page]
  • 您要插入的表的确切名称是什么?名称(一个字符串,可能被 ` 包围)应该是 INTO 和括号内的列名之间的唯一内容。
  • 作为 T.S.提到,而且你还年轻,请阅读有关 PARAMETERIZED SQL 语句的信息。通过构建字符串,您对 sql-injection 是开放的。参数化查询基本上是 sql 语句中的占位符值,然后您执行 SqlDataSource1.InsertCommand.Parameters.Add() 以在相应的占位符位置填写您想要的值。阅读有关内容,您将看到大量可使用的示例。祝你学习顺利。

标签: sql vb.net insert-into


【解决方案1】:

由于您已经 12 岁,因此我不会深入探讨为什么需要参数化查询以及如何进行。但这里是你自己可以看到的

INSERT INTO Information Page (RName, RCountry)

让我们来看看上面的部分。当您将其作为命令发送到 DB 时,DB SQL 解析器认为......我是 DB 解析器一分钟:得到“插入”- 好,得到“进入”- 好,得到“信息”- 检查表或视图 - 不是发现 - 错误。

但是如果你用“[]”包围你的“信息页面” --> [Information Page]。现在编译器会去:得到“[”找到“]”-在两者之间获取字符串-检查表或视图-好...

一般来说,您可以使用包含空格的表名,但使用此功能并不是一个好主意

【讨论】:

    猜你喜欢
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多