我基本上是为了让这个sql语句具有ZipCode或单词DEFAULT的值。
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是一个字符串而不是保留字词默认
所以...我从前面提到的问题中看到我不能使用保留的词语默认值作为值。我还看到了你可以在哪里重写SQL ......这样可以工作,但可能会因多个字段而变得毛茸茸。
答案 0 :(得分:3)
根本不需要这样做。这类事情应该在数据库级别完成。您需要确保数据库表中的列具有DEFAULT
约束,该约束将添加到所有新记录中如果未指定任何值。
说,我可以想到两种选择。
if
语句,如果oSB.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
范围内的任意数量的参数。