【问题标题】:splitting string of value and sending to database拆分字符串值并发送到数据库
【发布时间】:2014-03-31 18:08:31
【问题描述】:

我正在尝试实际单独拆分一串值并尝试通过 Store 过程将其发送到数据库中,但我不知道该怎么做?

要拆分的字符串:“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;
}

【问题讨论】:

    标签: c# asp.net .net c#-4.0


    【解决方案1】:

    在我看来它只是逗号分隔,在这种情况下尝试:

    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"]);
    

    当然,我回避了一些问题,例如类型转换失败以及部件和字段之间的差异,但你明白了。

    【讨论】:

    • 谢谢大佬,初学者理解起来太难了,请简单一点
    【解决方案2】:

    @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;
    

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多