C# 数据为空。在连接C.net中的两个表后,无法对null值调用此方法或属性
在代码中加入表后,错误数据为空。无法在出现空值时调用此方法或属性 请看一下我的密码,请帮忙。我试图在谷歌上寻找答案,但仍然没有得到我想要做的 以下是导致上述错误的代码:C# 数据为空。在连接C.net中的两个表后,无法对null值调用此方法或属性,c#,sql-server,null,C#,Sql Server,Null,在代码中加入表后,错误数据为空。无法在出现空值时调用此方法或属性 请看一下我的密码,请帮忙。我试图在谷歌上寻找答案,但仍然没有得到我想要做的 以下是导致上述错误的代码: private static string m_sConnectionString = ConfigurationManager.ConnectionStrings["NomsConnection"].ConnectionString; private static string m_sReport = "SELECT
private static string m_sConnectionString = ConfigurationManager.ConnectionStrings["NomsConnection"].ConnectionString;
private static string
m_sReport = "SELECT r.[RequestID],r.[RequestDate],r.[PARNumber],r.[StatusID],r.[PurchaseComment]" // 0 - 4
+ ",r.[UID],r.[MyUID],r.[FullName],r.[Email]" // 5 - 8
+ ",r.[EntityName],r.[DepartmentName],r.[DepartmentID]" // 9 - 11
+ ",r.[LastBy]" // 12
+ ",r.[ProgramID],r.[ProgramCode],r.[ProgramName],r.[CostCenterCode]" // 13 - 16
+ ",p.[PartDesc],p.[SupplierID],p.[AccountType],p.[CurrName],p.[PartQuantity],p.[PiecePrice]"
+ "FROM [NOP_PR].[dbo].[Requests] r "
+ "JOIN [NOP_PR].[dbo].[Parts] p on p.[RequestID] = r.[RequestID]"
+ "WHERE [CountryName] IN ('Philippines')";
public static List<NomsPRRequest> LoadPRRequestFromDB(DateTime from, DateTime to) {
string sSrcipt = m_sReport + "and [RequestDate] between '" + from.ToString("yyyy-MM-dd HH:mm:ss") + "' and '" + to.ToString("yyyy-MM-dd HH:mm:ss") + "'";
Dictionary<long, NomsPRRequest> data = new Dictionary<long, NomsPRRequest>();
long key;
double dAmount;
using (SqlConnection con = new SqlConnection(m_sConnectionString)) {
con.Open();
using (SqlCommand command = new SqlCommand(sSrcipt, con)) {
SqlDataReader reader = command.ExecuteReader();
while (reader.Read()) {
key = reader.GetInt64(0);
if (!data.ContainsKey(key)) {
data.Add(key, new NomsPRRequest() {
RequestID = key
,RequestDate = reader.GetDateTime(1)
,PARNumber = reader.GetString(2)
,StatusID = reader.GetInt64(3)
,FullName = reader.GetString(7)
,LastBy = reader.GetString(12)
,ProgramName = reader.GetString(14)
,ItemList = new List<NomsPRItem>()
,TotalAmount = 0.0
});
}
dAmount = (double)reader.GetDecimal(21) * (double)reader.GetDecimal(22);
data[key].TotalAmount += dAmount;
data[key].ItemList.Add(new NomsPRItem() {
RequestID = key,
PartDesc = reader.GetString(17)
,SupplierID = reader.GetString(18)
,AccountType = reader.GetString(19)
,CurrName = reader.GetString(20)
,PartQuantity = (double)reader.GetDecimal(21)
,PiecePrice = (double)reader.GetDecimal(22)
,Amount = dAmount
});
}
}
}
return data.Values.ToList();
}
}
因为我的数据库中的列[LastBy]只有空值。。我只是补充了卢安说的话:。。谢谢分享Luan
data[key].ItemList.Add(new NomsPRItem() {
,RequestDate = reader.GetDateTime(1)
,PARNumber = reader.GetString(2)
,StatusID = reader.GetInt64(3)
,FullName = reader.GetString(7)
,LastBy = reader.IsDBNull(12) ? null : reader.GetString(12)
,ProgramName = reader.GetString(14)
,ItemList = new List<NomsPRItem>()
,TotalAmount = 0.0
});
在读取可空列的值之前,需要使用reader.IsDBNull
例如:
PartDesc = reader.IsDBNull(17) ? null : reader.GetString(17)
在读取可空列的值之前,需要使用reader.IsDBNull
例如:
PartDesc = reader.IsDBNull(17) ? null : reader.GetString(17)
在读取可空列的值之前,需要使用reader.IsDBNull
例如:
PartDesc = reader.IsDBNull(17) ? null : reader.GetString(17)
在读取可空列的值之前,需要使用reader.IsDBNull
例如:
PartDesc = reader.IsDBNull(17) ? null : reader.GetString(17)
谢谢你@luan!这就是我一直在等待的代码。@Mijevoli:如果这个答案解决了你的问题,你为什么还要等待更好的答案?我猜你不知道我说的接受是什么意思,你可以看看这里:明白了!我只是个新手!感谢您指导@TimSchmelter!谢谢你@luan!这就是我一直在等待的代码。@Mijevoli:如果这个答案解决了你的问题,你为什么还要等待更好的答案?我猜你不知道我说的接受是什么意思,你可以看看这里:明白了!我只是个新手!感谢您指导@TimSchmelter!谢谢你@luan!这就是我一直在等待的代码。@Mijevoli:如果这个答案解决了你的问题,你为什么还要等待更好的答案?我猜你不知道我说的接受是什么意思,你可以看看这里:明白了!我只是个新手!感谢您指导@TimSchmelter!谢谢你@luan!这就是我一直在等待的代码。@Mijevoli:如果这个答案解决了你的问题,你为什么还要等待更好的答案?我猜你不知道我说的接受是什么意思,你可以看看这里:明白了!我只是个新手!感谢您指导@TimSchmelter!