区切られた.txt
ファイルから値を読み取り、データを解析してSQL Serverテーブルを更新するコードを記述しました。 .txt
ファイルには、約200行分のデータがあるので、私は問題がありますMicrosoft SQL ServerにデータをインポートするときにC#を使用して値を無視する
if
ステートメントを書き、私が探している値を指定してから、それらを正しい列に入れます。私の問題は私のelse文です。今私は空の文字列として私はテーブルに空の文字列を持っていないので、それを更新しようとすると私にエラーを与えているだけで空の文字列として設定している。
テーブルを更新するとき、どうすればELSE
を無視するのですか?
これは私が持つ問題している私のコードのセクションです:あなたが見ることができるように文が列の値を変更し、ということになるならば、私はそれぞれ異なるように、それは設定
foreach (var record in records)
{
Console.WriteLine(record.RESORT);
Console.WriteLine(record.FORMATTED_AMOUNT);
// This allows us to split what column a row goes into based on whether it is a day and what SUB_GRP_1 it is
string Heading = record.HEADING_2;
string Group = record.SUB_GRP_1;
string column;
if (Heading == "DAY" && Group == "OCC_PERC")
{
column = "Percent_Rooms_Occupied";
}
else if (Heading == "DAY" && Group == "OCC_PERC_WO_CH")
{
column = "Percent_Rooms_Occupied_minus_Comp_and_House";
}
else if (Heading == "DAY" && Group == "ADR_ROOM")
{
column = "ADR";
}
else if (Heading == "DAY" && Group == "ADR_ROOM_WO_CH")
{
column = "ADR_minus_Comp_and_House";
}
else if (Heading == "DAY" && Group == "ROOMREV_AVL_ROOMS_MINUS_OOO")
{
column = "Revenue_per_Available_Room_minus_OOO";
}
else if (Heading == "DAY" && Group == "TOTAL_REVENUE")
{
column = "Total_Revenue";
}
else if (Heading == "DAY" && Group == "ROOM_REVENUE")
{
column = "Room_Revenue";
}
else if (Heading == "DAY" && Group == "FOOD_BEV_REVENUE")
{
column = "Food_And_Beverage_Revenue";
}
else if (Heading == "DAY" && Group == "OTHER_REVENUE")
{
column = "Other_Revenue";
}
else if (Heading == "DAY" && Group == "PHYSICAL_ROOMS")
{
column = "Total_Rooms_in_Hotel";
}
else if (Heading == "DAY" && Group == "OCC_ROOMS")
{
column = "Rooms_Occupied";
}
else if (Heading == "DAY" && Group == "OCC_MINUS_COMP_HU")
{
column = "Rooms_Occupied_minus_Comp_and_House_Use";
}
else if (Heading == "DAY" && Group == "COMP_ROOMS")
{
column = "Complimentary_Rooms";
}
else
{
column = "";
}
// SQL connection. Creates connection and command and inserts the values taken from the File Helper engine into the SQL table
SqlCommand cmd;
SqlConnection conn;
conn = new SqlConnection("Data Source=hureports01;Initial Catalog=hureports;Integrated Security=True");
conn.Open();
var sqlCommand = string.Format(@"MERGE [HEWreport] AS target USING (select @Property_ID as Property_ID, @column as {0}) AS source ON (target.Property_ID = source.Property_ID) WHEN MATCHED THEN UPDATE SET {0}= source.{0} WHEN NOT MATCHED THEN INSERT (Property_ID, {0}) VALUES (source.Property_ID, source.{0});", column);
cmd = new SqlCommand(sqlCommand, conn);
cmd.Parameters.AddWithValue("@Property_ID", record.RESORT);
cmd.Parameters.AddWithValue("@column", record.FORMATTED_AMOUNT);
cmd.ExecuteNonQuery();
}
を持っています値はテーブルの列と直接関連しています。しかし、私はそれが私のelseステートメントを無視するようにすることはできませんし、別の見出しやグループを持つ行に遭遇するたびに私にエラーを与えている
SQLを実行するために、else文でキーワードcontinueを使用してください。明確にするために、 'continue'は次の' record in record'に移ります。 –
このエラーが発生しました:System.Data.dllで 'System.Data.SqlClient.SqlException'型の未処理例外が発生しました 追加情報:パラメータ化されたクエリ '(@Property_ID nvarchar(5)、@ column nvarchar (4000))MERGE [HEWrepor 'は供給されなかったパラメータ' @column 'を予期します。 –