拆分值字符串并发送到数据库
本文关键字:数据库 并发 字符串 拆分 | 更新日期: 2023-09-27 17:55:43
我正在尝试单独拆分一串值,并尝试通过存储过程将其发送到数据库中,但我无法弄清楚如何?
要拆分的字符串:"2013-03-31,1299,2013-03-31,1099,9888,0"法典:
public bool SqlInsert(String parametersString)
{
//It should be split here
SqlConnection sqlCon = new SqlConnection(conStr);
SqlCommand sqlCom = new SqlCommand("AddCoordinates", sqlCon);
sqlCom.CommandType = CommandType.StoredProcedure;
sqlCom.Parameters.Add("@AddedDateTime", SqlDbType.VarChar).Value = "";
sqlCom.Parameters.Add("@IMEI", SqlDbType.VarChar).Value = "";
sqlCom.Parameters.Add("@RecordedDateTime", SqlDbType.VarChar).Value = "";
sqlCom.Parameters.Add("@Latitude", SqlDbType.VarChar).Value = "";
sqlCom.Parameters.Add("@Longitude", SqlDbType.VarChar).Value = "";
sqlCom.Parameters.Add("@IsParking ", SqlDbType.Bit).Value = true;
try
{
sqlCon.Open();
int NoRows = (int)sqlCom.ExecuteNonQuery();
}
catch (Exception ex) { }
finally
{
sqlCon.Close();
}
return true;
}
在我看来
,它只是逗号分隔的,在这种情况下,请尝试:
string[] parts = "2013-03-31,1299,2013-03-31,1099,9888, 0".Split(',');
但是,这使得使用零件有点尴尬,因此我们可以更进一步:
string[] fields = new string[] {"date","imei","recorded_date","lat","lon","is_parking"};
List<string,string> dict = Dictionary<string,string>();
for(var i = 0; i < parts.Length; i++) {
var key = fields[i];
var value = parts[i].Trim(); // You may or may not want to trim the value
dict.Add(key,value);
}
然后,您可以拉取所需的单个字段并将它们转换为所需的类型,例如:
int imei = int.Parse(dict["imei"]);
当然,我回避了几个问题,例如类型转换失败以及部分和字段之间的差异,但您大致了解了。
@Lloyd提到的方法是最简单的方法。这是供您理解的代码。
string[] parts = "2013-03-31,1299,2013-03-31,1099,9888, 0".Split(',');
sqlCom.Parameters.Add("@AddedDateTime", SqlDbType.VarChar).Value = parts[0].ToString();
sqlCom.Parameters.Add("@IMEI", SqlDbType.VarChar).Value = parts[1].ToString();
sqlCom.Parameters.Add("@RecordedDateTime", SqlDbType.VarChar).Value = Convert.ToDateTime(parts[2].ToString());
sqlCom.Parameters.Add("@Latitude", SqlDbType.VarChar).Value = parts[3].ToString(); ;
sqlCom.Parameters.Add("@Longitude", SqlDbType.VarChar).Value = parts[4].ToString(); ;
sqlCom.Parameters.Add("@IsParking ", SqlDbType.Bit).Value = ((parts[5].ToString().Trim()).Equals("0"))? true: false;
希望对您有所帮助!