下面是我获取数据的查询,我的问题是,我将地址字段存储为
Address1%Address2%Address3
现在提取时我想将其作为Adress1 (newline) Adress2 (newline)Adress3
获取
我怎么能这样做?
例如丹吉%ABC%普纳
作为Dange
ABC
普纳
OleDbDataAdapter da = new OleDbDataAdapter(@"SELECT FirstName,LastName,Address FROM Doctor_Master WHERE Type_of_Dr='" + typeofDr + "'", con))
答案 0 :(得分:2)
遗憾的是,Microsoft.Jet.OLEDB.4.0
提供商不像Replace()
提供商那样支持Microsoft.ACE.OLEDB.12.0
功能,否则对您来说会更容易。
我认为您必须正常获取Address
字段并使用辅助函数将string
转换为您想要的格式,如下所示:
public string GetBrokenLines(string address){
return address.Replace("%","\r\n");
}
//instead of using the address directly, you just need to pass it into the GetBrokenLines
//method and get the expected result.
要使用适配器填充DataTable
,请尝试以下操作:
public static DataTable GetRefDrList(string typeofDr, bool display){
DataTable refDrListTable = new DataTable();
refDrListTable.RowChanged += Format;
//....
da.Fill(refDrListTable);
//....
}
bool suppressFormat;
private void Format(object sender, DataRowChangedEventArgs e){
if(suppressFormat) return;
suppressFormat = true;
e.Row["Address"] = e.Row["Address"].ToString().Replace("%","\r\n");
suppressFormat = false;
}
答案 1 :(得分:1)
我会改变你存储数据的方式。您可以引入一个新表Doctor_Master_Address。如果每位医生只有一个地址,您还可以向Doctor_Master添加更多列。这样你就知道肯定会有街道名称,省名,邮政编码,国家等等。
如果您仍然选择使用值字段,则可以将该地址存储为该字段中的xml,以便轻松序列化数据。如果省略Address2然后解析Address1%Address3怎么办?如果它只是由'%'分隔,你怎么知道Address3代表什么?
如果您仍然选择使用%分隔的一个字段,请选中msdn以进行拆分字符串信息。