C# 如何允许SQL数据库中的空值在WPF DataGrid控件中显示为空字符串(使用WCF服务)?
我正在练习使用Northwind数据库,我创建了一个服务,允许我从employees表浏览Northwind员工。接口的代码为:C# 如何允许SQL数据库中的空值在WPF DataGrid控件中显示为空字符串(使用WCF服务)?,c#,sql-server,wpf,wcf,C#,Sql Server,Wpf,Wcf,我正在练习使用Northwind数据库,我创建了一个服务,允许我从employees表浏览Northwind员工。接口的代码为: [ServiceContract] public interface IEmployeesService { [OperationContract] List<EmployeesCon> FetchEmployees(); } [DataContract] public class EmployeesCon { [DataMem
[ServiceContract]
public interface IEmployeesService
{
[OperationContract]
List<EmployeesCon> FetchEmployees();
}
[DataContract]
public class EmployeesCon
{
[DataMember]
public int EmployeeID { get; set; }
[DataMember]
public string LastName { get; set; }
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string Title { get; set; }
[DataMember]
public string Address { get; set; }
[DataMember]
public string City { get; set; }
[DataMember]
public string PostalCode { get; set; }
[DataMember]
public string HomePhone { get; set; }
}
[服务合同]
公共接口IEmployeesService
{
[经营合同]
列出雇员();
}
[数据合同]
公营雇员协会
{
[数据成员]
public int EmployeeID{get;set;}
[数据成员]
公共字符串LastName{get;set;}
[数据成员]
公共字符串名{get;set;}
[数据成员]
公共字符串标题{get;set;}
[数据成员]
公共字符串地址{get;set;}
[数据成员]
公共字符串City{get;set;}
[数据成员]
公共字符串PostalCode{get;set;}
[数据成员]
公共字符串家庭电话{get;set;}
}
我没有包括数据库中的所有属性,只是其中的一些
服务类中的代码是:
public class EmployeesService : IEmployeesService
{
private string cnnNorthwind = Properties.Settings.Default.NORTHWNDConnectionString;
public List<EmployeesCon> FetchEmployees()
{
SqlConnection con = new SqlConnection(cnnNorthwind);
SqlCommand command = new SqlCommand("SELECT EmployeeID, LastName, FirstName, Title, Address, City, PostalCode, HomePhone FROM Employees", con);
try
{
con.Open();
SqlDataReader dr = command.ExecuteReader();
List<EmployeesCon> employeesList = new List<EmployeesCon>();
while (dr.Read())
{
EmployeesCon z1 = new EmployeesCon();
z1.EmployeeID = dr.GetInt32(0);
z1.LastName = dr.GetString(1);
z1.FirstName = dr.GetString(2);
z1.Title = dr.GetString(3);
z1.Address = dr.GetString(4);
z1.City = dr.GetString(5);
z1.PostalCode = dr.GetString(6);
z1.HomePhone = dr.GetString(7);
employeesList.Add(z1);
}
return employeesList;
}
catch (Exception)
{
return null;
}
finally
{
con.Close();
}
}
}
公共类EmployeesService:IEEmployeesService
{
私有字符串cnnNorthwind=Properties.Settings.Default.NORTHWNDConnectionString;
公共雇员名单()
{
SqlConnection con=新的SqlConnection(cnnNorthwind);
SqlCommand=newsqlcommand(“选择员工ID、姓氏、姓氏、头衔、地址、城市、邮政编码、来自员工的家庭电话”,con);
尝试
{
con.Open();
SqlDataReader dr=command.ExecuteReader();
List employeesList=新列表();
while(dr.Read())
{
EmployeesCon z1=新员工scon();
z1.EmployeeID=dr.GetInt32(0);
z1.LastName=dr.GetString(1);
z1.FirstName=dr.GetString(2);
z1.Title=dr.GetString(3);
z1.Address=dr.GetString(4);
z1.City=dr.GetString(5);
z1.PostalCode=dr.GetString(6);
z1.HomePhone=dr.GetString(7);
新增员工名单(z1);
}
返回员工名单;
}
捕获(例外)
{
返回null;
}
最后
{
con.Close();
}
}
}
在所有这些之后,我创建了一个WPF项目,作为一个带有datagrid的服务客户机,向我显示员工的信息
问题是,SQL Employees表中的某些字段为空(并且允许为空)。当我启动服务WCF测试客户端时,它给我空值(来自异常)
有谁能帮助我调整代码,以便将数据库字段中的空值包括在内并表示为空字符串,以便代码可以工作
提前感谢。在作业中,如果值为空,您可以使用r(??)提供默认值
z1.Title = dr.GetString(3) ?? string.Empty;
它并没有解决这个问题,因为我仍然无法从数据库的字段中获取空值。它每次都抛出异常。但我试图在其他帖子中找到解决方案,对我有效的代码是z1.Title=(dr.IsDBNull(3))?“”:dr.GetString(3);