【发布时间】:2015-01-13 17:44:25
【问题描述】:
我有一个输入“姓名”和“电话”的表单。
当它们有值时,一切正常:使用存储过程 spFoo 将记录插入数据库:
String sp = "spFoo 'test name','test phone'";
OdbcCommand command = new OdbcCommand(sp, connection);
command.CommandType = System.Data.CommandType.StoredProcedure;
connection.Open();
Response.Write(command.ExecuteNonQuery().ToString());
- 适用于应用程序
- 在 Mgmt Studio 上工作
但是当它们没有值时,我会在应用程序中得到 -1 作为响应:
String sp = "spFoo '',''";
- 在应用程序中不起作用 (-1)
- 在 Mgmt Studio 上工作
我希望用户能够在没有任何输入的情况下创建记录。
为什么这在 Management Studio 中有效,但在应用程序中无效?
更新: 我在存储过程中为参数添加了默认值,但它不起作用;我在代码中给出了空字符串“NULL”作为值,仍然没有运气。这是服务器设置还是不允许空变量的设置?
【问题讨论】:
-
修改sp,使param作为可选参数,然后直接从代码中调用sp
-
因为您将命令文本设置为过程的名称。然后你需要为每个参数添加参数到你的命令中。
-
程序中有什么?表结构如何?首先,如果变量的值未通过过程,您是否使用默认值作为 nulll。并且在插入的情况下,您的表是否允许 NULL 值。
-
你的存储过程中有
SET NOCOUNT ON;吗?如果是这样,您应该删除它,因为它会阻止 SQL Server 从 SP 返回受影响的行数。 -
就是这样!我删除了它并开始恢复 1。当我检查数据库时,我有一堆空记录。我想服务器需要一段时间才能告诉我它有新记录。把它作为一个答案,我会给你信用,@petelids。
标签: c# sql-server