2

我正在尝试将默认值传递给 c# 中的 SQL Server。

此代码传递 null。有没有办法通过默认值?

foreach (SqlParameter Parameter in command.Parameters)
{
    if (Convert.ToString(Parameter.Value) == "")
    {
        Parameter.Value = DBNull.Value;
    }
}
4

3 回答 3

5

要么不添加参数,要么添加参数但将值设置为null( not DBNull.Value )。两者具有相同的效果:不传递参数,因此使用默认值。

于 2013-02-14T21:51:01.680 回答
2

您可以在 SQL-Server 中设置参数默认值(存储过程...)

(@parm varchar(5) = null)
AS
Begin...

然后根本不要从 C# 传递参数。

于 2013-02-14T21:45:28.063 回答
1

这是另一种解决方案——它似乎在存储过程中搜索参数默认值(字面意思是在变量声明中搜索赋值的模式),并返回找到的任何默认值。所以...您可以从您的 c# 应用程序调用过程以获取所有默认值,将它们分配给本地 C# 变量,然后在您调用其他过程时使用它们。

http://www.codeproject.com/Articles/12939/Figure-Out-the-Default-Values-of-Stored-Procedure

以下是如何在表本身上找到默认值:(您可能需要从返回值中去掉括号)

SELECT COLUMN_DEFAULT, replace(replace(COLUMN_DEFAULT,'(',''),')','') as DefaultWithNoParenthesis
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'WHATEVER'

祝你好运!

于 2013-02-19T17:11:00.353 回答