【问题标题】:Trying to insert a row into my table using sql query INSERT INTO尝试使用 sql 查询 INSERT INTO 在我的表中插入一行
【发布时间】:2015-04-17 10:11:25
【问题描述】:

我正在尝试使用INSERT INTO SQL 查询向我的数据库中插入一个新行。我不确定我做错了什么,因为我不是更有经验的程序员。

我试图在按下按钮时将整数值 1 添加到问题类型列。我的主键会自动递增,所以这不应该成为问题,因为所有其他列都可以为 NULL。

INSERT INTO dbo.Questions (Question Type)
VALUES (1)

当我对该查询按 OK 时,会显示一条错误消息:

尝试创建参数化查询时出错:

函数参数列表中的错误:“类型”无法识别。参数或列列表不完整。无法解析查询文本。

这是我要添加到的表的代码:

CREATE TABLE [dbo].[Questions] (
[QuestionID]     INT           IDENTITY (1, 1) NOT NULL,
[Actual answer]  NVARCHAR (50) NULL,
[Question Space] NVARCHAR (50) NULL,
[Question Type]  INT           NULL,
PRIMARY KEY CLUSTERED ([QuestionID] ASC)
);

【问题讨论】:

  • 写成:INSERT INTO dbo.Questions VALUES (Null,Null,1)
  • 我不使用搜索条件生成器,但网上一瞥表明当您的调用代码使用需要 SELECT 查询的表适配器时会导致错误。正如@X.L.Ant 所要求的,我们能看到提交这个 SQL 事务请求的代码吗?

标签: c# sql sql-server database sql-insert


【解决方案1】:

试试这个.. 如果列名包含空格,则应使用方括号 ([]) 将整个列名括起来。

INSERT INTO dbo.Questions ([Question Type])
VALUES (1)

这是用于 SQL 服务器的... 如果是 MySQL 则使用 ("") 或 (``)

【讨论】:

  • 不仅是空格,还有任何未经授权的字符。
  • 当我尝试此操作时,它显示“无法获取此查询的架构。”
  • 我不是 100% 确定您所说的 DBMS 是什么意思,但我正在创建一个本地网络。我正在使用 Microsoft Visual Studio Express 2013 并且正在使用 sql?
  • 你在使用 SQL Server
  • 是的,我正在使用 SQL 服务器
【解决方案2】:

您不允许在列名之间使用空格。使用带有double quotessquare braces.""[] 的标识符

INSERT INTO dbo.Questions ("Question Type")
VALUES (1)

【讨论】:

  • 当我尝试此操作时,它显示“无法获取此查询的架构。”
  • @mot375 你用的是哪个数据库?把你的桌子结构放在这里
  • @mot375 以及您用于执行该查询的代码。
  • 'm 不是 100% 确定您所说的 DBMS 是什么意思,但我正在创建一个本地网络。我正在使用 Microsoft Visual Studio Express 2013 并且正在使用 sql?我真的没有任何与我正在使用数据网格视图相关的代码,这有助于为您添加查询
  • 您正在从 c# 或数据库查询面板执行此查询
【解决方案3】:

由于(还)没有代码可以访问该表,请删除列名中的空格。

【讨论】:

  • 我同意。听起来您的项目还处于早期阶段。现在是更改列名的好时机,这样它们中就没有空格(或其他非字母数字字符,如破折号或下划线)。像这样命名它们会让你日后感到非常悲伤。
猜你喜欢
  • 2019-04-30
  • 2023-01-11
  • 1970-01-01
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多