2016-06-16 1 views
-1

私は新しい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に日付を入れてあり、「ビジネス日:」

+1

は、スタックオーバーフローへようこそ[、最小完全、かつ検証例を作成する方法]お読みください(http://stackoverflow.com/help/mcve) –

+0

!。はい、プログラミングの単純な問題です。goog le "C#string parsing examples"を参照し、見つかったサンプルを試してみてください。理解できないエラーが発生した場合は、質問として投稿してみてください。 –

+0

ありがとうございます。私はコーディングにはかなり新しいですが、これは多くの助けとなりました – user6451557

答えて

1

はこれを試してみてください:

string[] getDate = textBoxVal.Split(':'); 
string dateOfReport = getDate[1]; 

あなたはSQLの日時としてこれを格納しているあなたがしたいこと? 。

関連フィドル、後でそれを変換:https://dotnetfiddle.net/ql40kl

+0

これは完全に機能しました。ありがとうございました – user6451557

関連する問題