how to pass sql parameter as null value in integer datatype variable?

我的未来我决定 提交于 2019-12-21 09:30:11

问题


how to pass sql parameter as null value in to integer data type variable ?

        StockBO sBO = new StockBO();
        sBO.Mode = 2;
        if (ddcmpanyname.SelectedIndex != 0)
        {
            sBO.Client_id = Convert.ToInt16(ddcmpanyname.SelectedValue);
        }
        else
        {
            sBO.Client_id = Convert.ToInt16(DBNull.Value);//Object cannot be cast from DBNull to other types.
       sBO.Client_id =DBNull.Value;//Cannot implicitly convert type 

        }
        ds=_StockController.StockGet(sBO);

i changed the code like this it gives error like i my comment check else part


回答1:


Try this,

else
    {
        sBO.Client_id = System.Data.SqlTypes.SqlInt32.Null;
    }



回答2:


It's not entirely clear what you mean. If you're trying to pass a null value in a SQL parameter, you should use DBNull.Value as the value for your SqlParameter (or whatever type you're using). If you want to represent a nullable integer in C#, use int? (or Nullable<int> - they're the same thing).

You can't store a null value in a normal non-nullable value type variable. Nullable value types are still structs, but they wrap the non-nullable type and add a Boolean value to indicate whether it's a "real" value or null. C# adds syntactic sugar around it, allowing you to use the null literal for assignments, various conversions, lifted operators etc:

int? value = 5;
value = null;
if (value == null)
{
    ...
}

If that doesn't help, please give us more information about exactly what you're trying to do.

EDIT: Okay, so it looks like StockBO.Client_id should be of type short? - but then that won't allow DBNull.Value to be set directly. You should use null to set the client ID to the null value. Whenever you translate between objects and SQL parameters and results, you'll need to perform that kind of conversion yourself - if you find yourself doing this regularly, work out some helper methods to make it easier for you.

Of course, if you start using LINQ to SQL or anything like that, you don't need to worry about DBNull.Value - LINQ providers tend to support nullable value types directly.




回答3:


from SQL to C# >

int number;
Int32.TryParse(paramvalue, out number);

from C# to SQL >

add DBNull to your parameter




回答4:


Try DBNull.Value; Like for instance:

dbParamId.Value = (object)MyID ?? DBNull.Value;



回答5:


It is better to directly assign DBNull.Value like:

sBO.Client_id = DBNull.Value

DBNull.Value is for all object




回答6:


Considering ParamValue contains the result of the query as an integer or a DBNull.Value, I'm casting it to int? this way:

var Result = ParamValue as int?;

To determine whether Result is null, do check Result.HasValue. Otherwise, use it as a usual integer, or Result.Value



来源:https://stackoverflow.com/questions/3252800/how-to-pass-sql-parameter-as-null-value-in-integer-datatype-variable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!