0

下面是我获取数据的查询,我的问题是,我将地址字段存储为

Address1%Address2%Address3

现在在获取时我想获取它,Adress1 (newline) Adress2 (newline)Adress3 我该怎么做?

例如 Dange%abc%Pune

作为丹格

美国广播公司

浦那

OleDbDataAdapter da = new OleDbDataAdapter(@"SELECT FirstName,LastName,Address FROM Doctor_Master WHERE Type_of_Dr='" + typeofDr + "'", con))
4

2 回答 2

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;
}
于 2013-10-06T19:39:39.407 回答
1

我会改变你存储数据的方式。您可以引入一个新表 Doctor_Master_Address。如果每个医生只有一个地址,您还可以向 Doctor_Master 添加更多列。这样你就知道肯定会有街道名称、省名、邮政编码、国家等。

如果您仍然选择使用值字段,则可以将地址作为 xml 存储在该字段中,以便于序列化数据。如果省略 Address2 然后解析 Address1%Address3 会怎样?如果它只是由 '%' 分隔,你怎么知道 Address3 代表什么?

如果您仍然选择使用由 % 分隔的字段,请查看msdn以获取拆分字符串信息。

于 2013-10-06T19:37:42.803 回答