2012-06-06 30 views
0

一个小问题关于C#的存储过程...和SQL数据库一般: 当你从C#传递变量的值存储过程,有时你必须SQL记录条目,不同的测试用例

INSERT INTO tablename (column1 name, column2 name, column3 name, columnN name) 
VALUES (@the actual values1, @values2, @valueN); 

其他时候你没有列名,但只输入了值... 如果我输入这样的内容会发生什么(假设表中有3列称为“bob”,“ash”和“will”) :

INSERT INTO tablename (bob, will) VALUES ("hi","hello"); 
OR 
INSERT INTO tablename (bob, will) VALUES ("hi","hello","okay"); 
OR 
INSERT INTO tablename (bob, will) VALUES ("hello"); 

它将如何影响条目?

+0

请格式化您的问题,使其可读。 –

+0

你的问题没有意义。你定义的存储过程的方式决定了你应该如何编程来自C#的调用。也许你应该发布你的存储过程来看看它是如何被调用的。 – CAbbott

+0

如果你不知道你的数据会进入哪些领域,那么你做的事情是非常错误的。你怎么知道'hello'的值是否属于Bob,will或ash?它有所作为。 – HLGEM

回答

0

第一个查询正确插入该记录(如果没有主键违规)。
第二个查询失败,因为您有三个值和两个字段。
第三个查询失败,因为您有两个字段的值。

+0

第三个查询也不会解析。 – Quassnoi

+0

@Quassnoi:我不能尝试,但是,如果你告诉我我编辑我的答案。谢谢:) – Marco

+0

+解释为什么声明不起作用的答案。 – Bulvak

1

第一个查询会将默认值插入ash,其他两个不会解析。

+0

用于纠正Marco的+1 – Bulvak

1

由于Quassnoi和Marco指出了sql方面的错误关注。

在C#中调试时,您将收到以下错误。

INSERT语句中的列数少于VALUES子句中指定的值 。 VALUES子句中的值数量必须为 与INSERT语句中指定的列数相匹配。

+0

+1用于解释原因(错误)。 – Bulvak

0

在SQL第一查询被执行成功,而第二个查询日子会把收到以下错误: 有比VALUES子句中指定的值的INSERT语句较少的列。 VALUES子句中的值数量必须与INSERT语句中指定的列数相匹配。 和第三个查询也会产生以下错误: INSERT语句中的列数多于VALUES子句中指定的值。 VALUES子句中的值数量必须与INSERT语句中指定的列数相匹配。

+0

请格式化您的答案,以便阅读。 – Bulvak

相关问题