拆分值字符串并发送到数据库

本文关键字:数据库 并发 字符串 拆分 | 更新日期: 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;

希望对您有所帮助!