私は新しいC#コーダーであり、Microsoft SQL Serverも新しくなっています。私が書いたコードは、filehelpersを使ってファイルからデータを解析し、そのデータをSQLテーブルに配置します。私の質問は、それがデータを解析することができますが、SQLサーバー内の文字列の一部だけを配置するかどうかです。たとえば、私のコードは次のとおりです。C#を使用してSQLデータベースに文字列の一部のみを挿入
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FileHelpers;
using System.Data.SqlClient;
using System.IO;
namespace OnQ_prototype
{
class Report
{
[DelimitedRecord("\t")]
[IgnoreEmptyLines()]
public class ColumnReportNames
{
public String textbox22;
public String textbox29;
public String textbox24;
public String textbox23;
public String PSFullAcct;
public String AccountDescription;
public String BusDateAmount;
public String ThisPTDAmount;
public String LastPTDAmount;
public String ThisYTDAmount;
public String LastYTDAmount;
public String BusDatePctAvail;
public String ThisPTDPctAvail;
public String LastPTDPctAvail;
public String ThisYTDPctAvail;
public String LastYTDPctAvail;
}
static void ProcessFilesCSVFiles(string originalPath, string destinationPath)
{
foreach (var GenesisDirectory in Directory.GetDirectories(originalPath))
{
foreach (var inputFile in Directory.GetFiles(GenesisDirectory, "*.csv"))
{
string lines = inputFile;
FileHelperEngine engine = new FileHelperEngine(typeof(ColumnReportNames));
var records = engine.ReadFile(lines) as ColumnReportNames[];
foreach (var record in records)
{
SqlCommand cmd;
SqlConnection conn;
conn = new SqlConnection("Data Source=hureports01;Initial Catalog=hureports;Integrated Security=True");
conn.Open();
var sqlCommand = string.Format(@"MERGE [OnQReport] AS target USING (select @Property as Property, @Date_of_Report as Date_of_Report, @Percent_Occupancy_PAR as Percent_Occupancy_PAR, @val as {0}) AS source ON (target.Date_of_Report = source.Date_of_Report) WHEN MATCHED THEN UPDATE SET {0}= source.{0} WHEN NOT MATCHED THEN INSERT (Property, Date_of_Report, Percent_Occupancy_PAR, {0}) VALUES (source.Property, source.Date_of_Report, Percent_Occupancy_PAR, source.{0});", column);
cmd = new SqlCommand(sqlCommand, conn);
cmd.Parameters.AddWithValue("@Property", record.textbox24);
cmd.Parameters.AddWithValue("@Date_of_Report", record.textbox23);
cmd.Parameters.AddWithValue("@Percent_Occupancy_PAR", amount2);
cmd.Parameters.AddWithValue("@val", amount);
cmd.ExecuteNonQuery();
conn.Close();
}
私が追加する値の1つは、textbox23にあるDate_of_Reportです。ただし、textbox23の値はBusiness Date:6/14/2016です。唯一のそれのための方法は、(つまりを取り除くDate_of_Reportに日付を入れてあり、「ビジネス日:」
は、スタックオーバーフローへようこそ[、最小完全、かつ検証例を作成する方法]お読みください(http://stackoverflow.com/help/mcve) –
!。はい、プログラミングの単純な問題です。goog le "C#string parsing examples"を参照し、見つかったサンプルを試してみてください。理解できないエラーが発生した場合は、質問として投稿してみてください。 –
ありがとうございます。私はコーディングにはかなり新しいですが、これは多くの助けとなりました – user6451557