Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用DBNullable类型_C#_Asp.net_Dbnull - Fatal编程技术网

C# 使用DBNullable类型

C# 使用DBNullable类型,c#,asp.net,dbnull,C#,Asp.net,Dbnull,代码如下: protected void btnSearch_Click(object sender, EventArgs e) { List<STATbatter> completelist = new List<STATbatter>(); DALbatter batter = new DALbatter(); batter.NameLast = txtLastName.Text; DataTable batters = DA

代码如下:

    protected void btnSearch_Click(object sender, EventArgs e)
{
    List<STATbatter> completelist = new List<STATbatter>();
    DALbatter batter = new DALbatter();
    batter.NameLast = txtLastName.Text;

    DataTable batters = DALbatter.getBattersByLastName(batter);

    for (int i = 0; i < batters.Rows.Count; i++)
    {
        DataRow bat = batters.Rows[i];

        STATbatter stat = new STATbatter();

        stat.PlayerID = bat.Field<String>("playerID");
        stat.G = bat.Field<Int32>("G");
        stat.Ab = bat.Field<Int32>("AB");
        stat.H = bat.Field<Int32>("H");
        stat.Bb = bat.Field<Int32>("BB");
        stat.Cs = bat.Field<Int32>("CS");
        stat.Doub = bat.Field<Int32>("2B");
        stat.Trip = bat.Field<Int32>("3B");
        stat.Hr = bat.Field<Int32>("HR");
        stat.Rbi = bat.Field<Int32>("RBI");
        stat.Sb = bat.Field<Int32>("SB");
        stat.K = bat.Field<Int32>("SO");
        stat.Ibb = bat.Field<Int32>("IBB");
        stat.Hbp = bat.Field<Int32>("HBP");
        stat.Sh = bat.Field<Int32>("SH");
        stat.Sf = bat.Field<Int32>("SF");
        stat.Gidp = bat.Field<Int32>("GIDP");

        //calculated fields
        stat.NameFull = STATbatter.fullName(bat.Field<String>("nameLast"), bat.Field<String>("nameFirst"));
        stat.Avg = STATbatter.battingAverage(stat.H, stat.Ab);
        stat.Obp = STATbatter.onBasePercentage(stat.Ab, stat.H, stat.Bb, stat.Hbp, stat.Sf);
        stat.Slg = STATbatter.slugging(stat.H, stat.Doub, stat.Trip, stat.Hr, stat.Ab);

        completelist.Add(stat);
    }

    gvBatters.DataSource = completelist;
    gvBatters.DataBind();
}
protectedvoidbtnsearch\u单击(对象发送方,事件参数e)
{
List completelist=新列表();
DALbatter batter=新的DALbatter();
batter.NameLast=txtLastName.Text;
数据表batters=DALbatter.getBattersByLastName(batter);
for(int i=0;i
问题是:

我在App_数据文件中将一个mdf文件附加到项目中,创建了一个连接字符串以使用本地mdf。它工作得很好。我把这个项目拿到另一台电脑上,在网上:

stat.Cs = bat.Field<Int32>("CS");
stat.Cs=bat.Field(“Cs”);
我明白了

无法将DBNull.Value强制转换为类型“System.Int32”。请使用可为空的类型


不确定为什么这在另一台电脑上可以完美地工作,但无论如何,我怎样才能防止这个错误

数据库中该记录的CS列中的值为空。您可以执行以下两种操作之一:在数据库中填写一个值,或者修改您的
STATbatter
类,并将
Cs
字段设置为
int?
而不是
int
,后者是一个值。

数据库中的Cs列可以为null,这样您就不应该使用该读卡器获取
int
值。改为使用获取
int?
类型。其用途非常相似:

stat.Cs = dr.GetNullableInt32("CS");

哦,伙计,我把它作为一个整数,因为在db中它是一个整数,但是我对它们进行了很多计算,因此需要它们是小数,所以我把它们都改成小数。。。这是第一次测试。谢谢,我可以解决这个问题。当10分钟结束的时候,我会喜欢你的答案。我将考虑在我的项目中使用这个可为空的数据读取器。谢谢。但是,在尝试之后,问题似乎仍然在于我在我的类中将来自db的整数隐式转换为小数,有意义吗?在您显示的代码中,Stat巴特应该充当
bean
,并获得保持其相同类型的数据库相同字段。如果列
CS
float
,请使用
GetNullableFloat
填充Stat巴特的
stsat.CS
属性。如果它确实是
int
,而您在任何其他部分执行了错误的转换,请密切关注它,并创建一个正确的
系统。转换
或其他任何东西。