C# 如何在SQL Parameter.AddWithValue中设置默认值
我基本上是想让这个sql语句有一个ZipCode或单词DEFAULT的值C# 如何在SQL Parameter.AddWithValue中设置默认值,c#,sql-server,C#,Sql Server,我基本上是想让这个sql语句有一个ZipCode或单词DEFAULT的值 public static void AddEmployee(SB oSB) { string sSql = "INSERT INTO Employee (EmployeeID,ZipCode) " + "VALUES (@EmployeeID,@ZipCode); " ; SqlCommand cmd = new SqlCommand(sSql, GetC
public static void AddEmployee(SB oSB)
{
string sSql = "INSERT INTO Employee (EmployeeID,ZipCode) " +
"VALUES (@EmployeeID,@ZipCode); " ;
SqlCommand cmd = new SqlCommand(sSql, GetConnection());
cmd.Parameters.AddWithValue("@EmployeeID", oSB.EmployeeID);
string sZipCode = (oSB.ZipCode == "") ? "DEFAULT":oSB.ZipCode;
cmd.Parameters.AddWithValue("@ZipCode", sZipCode);
...
}
这不起作用,因为单词DEFAULT是一个字符串,而不是保留单词DEFAULT
所以…我从前面的问题中看到,我不能使用保留字DEFAULT作为值。我还看到了可以重写SQL的地方……这可以工作,但在多个字段中可能会出现问题。您根本不需要这样做。这类事情应该在数据库级别完成。您需要确保数据库表中的列具有
DEFAULT
约束,如果未指定任何值,该约束将添加到所有新记录中
也就是说,我可以想到两种选择
if
语句,其中ifoSB.ZipCode==”
,则不要
插入该值并让数据库处理它if(oSB.ZipCode == "")
{
string anotherSql = "INSERT INTO Employee (EmployeeID) " +
"VALUES (@EmployeeID); " ;
...
...
}
ZipCode
,则为默认值李>
SQL Server的示例:
CREATE PROCEDURE spr_AddNewRecord
@EmployeeID INT,
@ZipCode VARCHAR(10) = 'GX11 1AA' // Default value here
AS
BEGIN
INSERT INTO Employee (EmployeeID, ZipCode)
VALUES (@EmployeeID, @ZipCode)
END
现在,您所要做的就是从代码中调用存储过程,并传入1-2
范围内的任意数量的参数,哪个RDBMS?您始终可以将sql命令更改为“INSERT-INTO-Employee(EmployeeID)”+“值(@EmployeeID);当您希望传递默认值时。您是否尝试过不传递默认参数的任何内容,这可能会起作用?请签出此帖子:@Chris-您为什么认为这不会起作用。您尝试过吗?只要数据库中的@ZipCode
参数是字符串,它就应该起作用。运行代码段时会出现什么错误?Microsoft Database.Related post-.@RBT这是一个很好的复制候选…我喜欢存储过程的想法,它让我思考…为什么不从模式表中获取默认的_值呢。