标签: dbnull

如何处理来自SQL Server的DBNull DateTime字段?

当我检索具有null DataTime字段的行时,我收到此错误:

'srRow.Closed_Date'引发了'System.Data.StrongTypingException'类型的异常

我该如何正确处理这些?

c# null datetime dbnull

3
推荐指数
1
解决办法
2489
查看次数

无法将DBNULL值插入sql server

为什么我会收到此错误?

Object cannot be cast from DBNull to other types.
Run Code Online (Sandbox Code Playgroud)

当我在sql server 2005中为numeric数据类型插入null值时

这是我的代码,

 if (MeasurementTr.Visible == true)
    {
        materialIn.measurementId = Convert.ToInt64(DlMeasurement.SelectedValue.ToString());
    }
    else
    {
        materialIn.measurementId = Convert.ToInt64(DBNull.Value);
    }
Run Code Online (Sandbox Code Playgroud)

编辑:

这是正确的吗??

 materialIn.measurementId = (Convert.ToInt64(DlMeasurement.SelectedValue.ToString()) != 0) ? Convert.ToInt64(DlMeasurement.SelectedValue.ToString()) : 0;
Run Code Online (Sandbox Code Playgroud)

c# dbnull sql-server-2005

3
推荐指数
1
解决办法
6119
查看次数

绑定到详细信息视图控件中的复选框时,将DBNull转换为布尔值

这有点傻但我有一个DetailsView,它使用sqlDataSource绑定到我的数据库中的记录.我的问题是我绑定的字段是一个位字段,(i,e 1或0),目前允许空值.我意识到这需要改变,但我还需要能够在GUI端处理DBNulls,以便应用程序自动知道如果值为DBNull,则将复选框的Checked属性设置为"false".目前我的模板字段看起来像这样.

 </asp:TemplateField>
   <asp:TemplateField HeaderText="Car:" HeaderStyle-Width="15%" ItemStyle-Width="85%">
  <ItemTemplate>
    <asp:Label ID="lblIsCar" runat="server" Text='<%#  Eval("isCar") %>' />
  </ItemTemplate>
  <EditItemTemplate>
    <asp:CheckBox ID="ckIsCar" runat="server"  Checked='<%#  Convert.ToBoolean(Eval("isCar"))%>' />
  </EditItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)

在View模式下一切正常,但是当我单击详细信息视图控件上的Edit链接时,我收到以下错误:

无法将对象从DBNull强制转换为其他类型.

有什么建议?

更新:

我需要通过Bind()而不是Eval()来使用2路绑定,因为详细信息视图会对所选记录执行更新.如果我在绑定时使用Convert.ToBoolean(),则会抛出异常.我最终可能会使用CheckboxField.人们会认为有一种简单的方法可以解决这个问题,但我找不到它是不吉利的.

c# asp.net dbnull detailsview sqldatasource

3
推荐指数
1
解决办法
1万
查看次数

避免在每列上检查DataRow.IsDBNull?

我的代码是2倍长于这将是,如果我可以自动设置IsDBNull""或简单地滚动它没有一个错误.

这是我的代码:

Dim conn As New SqlConnection
conn.ConnectionString = Module1.DBConn2
Dim sqlCommand = New SqlCommand("SELECT * FROM table", conn)
conn.Open()
Dim sqlDataset As DataSet = New DataSet()
Dim sqlDataAdapter As SqlDataAdapter = New SqlDataAdapter(sqlCommand)
sqlDataAdapter.Fill(sqlDataset)
conn.Close()

For Each rs As DataRow In sqlDataset.Tables(0).Rows
    If Not IsDBNull(rs("column")) Then
        Response.Write(rs("column"))
    Else
        Response.Write("")
    End If

    Response.Write("some stuff to write")

    If Not IsDBNull(rs("column2")) Then
        Response.Write(rs("column2"))
    Else
        Response.Write("")
    End If
Next
Run Code Online (Sandbox Code Playgroud)

在那种情况下,我只想输入Response.Write(rs("column"))而不是If语句,column IsDBNull然后输出一个空字符串.

我怎样才能做到这一点?

提前谢谢了!

vb.net dbnull datarow dataset

3
推荐指数
1
解决办法
2万
查看次数

如何在不检查null或0的情况下为sqlparameter NULL值赋值?

需要进行以下检查以检查空值.我有办法直接做到吗?

 if(node.ID==0)
 {
   cmd.Parameters["@ID"].Value = DBNull.Value;
 }
  else
  {
    cmd.Parameters["@ID"].Value = node.ID;
  }
Run Code Online (Sandbox Code Playgroud)

有没有办法我们可以通过这个检查和一个设计,我们可以避免对每个值进行重复检查?(顺便说一句,它只是一个逻辑,0对于我的情况被解释为NULL,但我也要求像字符串这样的可空对象一样)

c# database dbnull sqlcommand

3
推荐指数
1
解决办法
1663
查看次数

尝试转换SQL int时无效的强制转换异常 - > c#int?

嗨,我目前正在使用以下内容来获取SQL Server数据库的列

public IDataReader myReader()
{
    DbCommand = new SqlCommand("Select * from Mydatabase");
    SqlConnection con = new SqlConnection(connectionstr);
    con.Open();
    DbCommand.Connection = con
    return command.ExecuteReader(CommandBehavior.closeConnection);
}

IDataReader reader = myReader();
while (reader.Read())
{
    int? a = (int?)reader["myIntColumn"];
}
Run Code Online (Sandbox Code Playgroud)

在其他位置(对于其他表),代码工作正常,并且对于此表,它工作正常,直到我来到数据库中的int字段.然后我得到System.InvalidCastException(在其他表中我没有得到那个问题).

有什么我做错了吗?或者我必须做才能使这项工作?(有问题的int值在DB中为NULL)

c# sql sql-server null dbnull

3
推荐指数
1
解决办法
2982
查看次数

无论如何,DBNull需要什么?

可能重复:
DBNull有什么意义?

自从我开始使用.NET以来,我总是问自己一个问题:

为什么我们需要DBNull类型?简单的null引用是不够的?

MSDN说DBNull"表示不存在的值".从逻辑的角度来看 - 这一句话解释了为什么不能使用空引用 - 因为它是一个空引用而不是缺少值.但引入一种导致很多麻烦的类型是否足够?

顺便说一句:如果有人在辩护方面有话要说,DBNull我会非常感激.

c# dbnull

2
推荐指数
1
解决办法
541
查看次数

有没有办法检查列是否支持来自datareader的空值?

db中的表的列可以存储空值(如DBNulls).有没有一种方法,我可以从这些信息IDataReader还是DbDataReader

using (var reader = command.ExecuteReader())
{
    //can I get the column info like if it supports null value if I pass the ordinal?
    reader.CheckIfSupportsNull(someIndex) ???

    while (reader.Read())
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以读取单元格值并检查它DBNull.Value,但我不是问我是否可以检查读取值是否为null,但是如果我可以检查列本身是否支持DBNulls而不管表中存在的实际值.

我想知道这是否可能MySqlDataReader和/或SqlDataReader..

c# dbnull datareader sqldatareader mysqldatareader

2
推荐指数
1
解决办法
904
查看次数

Parsing a DBNULL value into double

I use the following line to convert the datarow value into double.

double.parse(Convert.ToString(datarow));
Run Code Online (Sandbox Code Playgroud)

If the datarow is DBNULL, I am getting the following exception:

'double.Parse(Convert.ToString(data))' threw an exception of type 'System.FormatException'

How to handle this one without using tryparse.

c# sql parsing dbnull formatexception

2
推荐指数
1
解决办法
6902
查看次数

为什么 dataTable.Rows[0]["columnName"] == null。不工作?

我有一个像下面这样的代码

txtbox1.Text = dtDetails.Rows[0]["columnName"] == null ? "--": dtDetails.Rows[0]["columnName"].ToString().Trim();
Run Code Online (Sandbox Code Playgroud)

上面一行是始终not null即使dtDetails.Rows[0]["columnName"] is null

txtbox1.Text = dtDetails.Rows[0]["columnName"] == DBNull.Value ? "--": dtDetails.Rows[0]["columnName"].ToString().Trim();
Run Code Online (Sandbox Code Playgroud)

完美地工作。这是为什么?以及如何null不同DBNull.Value

c# asp.net dbnull

2
推荐指数
1
解决办法
2006
查看次数