簡體   English   中英

訪問 class 中的列表,然后插入數據庫

[英]Access a list in a class then insert into database

我在訪問 class 中的列表時遇到問題。

下面是我創建的類。 在 class 基准中,有一個名為位置的列表。

public class Location
{
    public string location { get; set; }
    public string remarks { get; set; }
    public string deliverydate { get; set; }
    public string pickupdate { get; set; }
}

public class Datum
{
    public string tracking_number { get; set; }
    public string pickup_place { get; set; }
    public string delivery_place { get; set; }
    public string tel_no { get; set; }
    public string status { get; set; }
    public DateTime lastupdate_time { get; set; }
    public List<Location> Location { get; set; }
}

public class Root
{
    public List<Datum> data { get; set; }
}

我想使用 List 將值插入數據庫。 但是下面的代碼給出了一個錯誤:

“type”不包含“name”的定義,並且找不到接受“type”類型的第一個參數的可訪問擴展方法“name”(您是否缺少 using 指令或程序集引用?)。 在線

foreach ( var p in data.Root)
{
  string tracking_number = p.tracking_number;
  string pickup_place = p.pickup_place;
  string delivery_place = p.delivery_place;
  string tel_no = p.tel_no ;
  string status = p.status ;
  datetime lastupdate_time = p.lastupdate_time ;

  // start from this line, gives CS1061 error
  string location = p.Location.location ;
  string remarks = p.Location.remarks ;
  string deliverydate  = p.Location.deliverydate;
  string pickupdate = p.Location.pickupdate;

  query = "INSERT INTO Tracking (tracking_number, pickup_place, delivery_place, tel_no, status,
  lastupdate_time, location, remarks, deliverydate , pickupdate) VALUES (tracking_number,
  pickup_place, delivery_place, tel_no, status, lastupdate_time, location, remarks, deliverydate ,
  pickupdate);    
}

我怎么解決這個問題? 我試圖尋找解決方案,但沒有任何效果。

請嘗試以下代碼,您需要另一個位置循環

foreach (var p in data.Root)
{
  string tracking_number = p.tracking_number;
  string pickup_place = p.pickup_place;
  string delivery_place = p.delivery_place;
  string tel_no = p.tel_no;
  string status = p.status;
  DateTime lastupdate_time = p.lastupdate_time;
    
  // Other information will be same for the all location
   foreach (var item in p.Location)
   {
    string location = item.location;
    string remarks = item.remarks;
    string deliverydate = item.deliverydate;
    string pickupdate = item.pickupdate;
         query = "INSERT INTO Tracking (tracking_number, pickup_place, delivery_place, tel_no, status,
      lastupdate_time, location, remarks, deliverydate , pickupdate) VALUES(tracking_number,
      pickup_place, delivery_place, tel_no, status, lastupdate_time, location, remarks, deliverydate,
      pickupdate);
   }
}

建議

  1. 准備你的根 class。
  2. 使用 newtonsoft Z466DEEC76ECDF35FCA6D4Z38571 在 SQL 服務器中將整個根 class 作為 JSON 字符串傳遞。 Var json = Json.Serialize(rootObject)
  3. 在 SQL 服務器中獲取此 JSON 並從該 JSON 中提取位置和其他相應數據。
  4. 而不是使用循環,只需使用 Insert / Select 組合將您的位置作為集合/子集插入。

你的過程 header 應該是這樣的

Create proc Usp_InsertDatum (@json nvarchar(max))

在 C#

command.Parameters.AddWithValue("@json", json)

這是 JSON 和 SQL 服務器的 SQL 小屋鏈接。 https://www.sqlshack.com/how-to-parse-json-in-sql-server/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM