2016-10-05 2 views
0

좋은 아침, 만들기 SQL 문 - C#

는 미안은 .SQL 문서의 문장을 만들 수 있지만 몇 가지 문제를 가지고 미안하는 프로그램을 만들려고.

이 내 코드는 지금까지 있습니다 :

string[] filas = File.ReadAllLines("c:\\temp\\Statements.txt"); 
       StreamWriter sw = new StreamWriter("c:\\temp\\Statements.sql"); 
       foreach (string fila in filas) 
       { 
        string sql = "INSERT "; 
        string[] campos = fila.Split(' '); 

        if (campos[0]== "1A") 
        { 
         sql += " INTO TABLE1 (field1) VALUES (" + campos[1] + ");"; 
        } 
        else 
        { 
         sql += " INTO TABLE2 (field1,field2,field3) VALUES (" + campos[1] + "," + campos[2] + "," + campos[3] + ");"; 
        } 
        sw.WriteLine(sql); 
       } 

       sw.Close(); 
       { 

건이다 : 나는 TXT 문서를합니다 (아이폰에 변경됩니다) 읽은 다음 모두와 SQL 문서로 변환 할 필요가

1A123456 456,67
2B123456 씨 멋진 큰 STRT 독일 0 : 문, 예를 들어 "1A"또는 "2B"로 시작하는 라인의 두 tipes가있다
1A123456 456,67
2B123456 씨 멋진 큰 STRT 독일
2B123456 씨 멋진 큰 STRT 독일
1A123456 456,67
1A123456 456,67

다음 "변환하려고 메신저 "삽입 정보":

INSERT INTO TABLE1 (REF,MONEY) VALUES (A123456,456,67); 
INSERT INTO TABLE2 (REF,NAME,ADR) VALUES (B123456,mr awesome,great strt); 
INSERT INTO TABLE1 (REF,MONEY) VALUES (A123456,456,67); 
INSERT INTO TABLE2 (REF,NAME,ADR) VALUES (B123456,mr awesome,great strt); 
INSERT INTO TABLE2 (REF,NAME,ADR) VALUES (B123456,mr awesome,great strt); 
INSERT INTO TABLE1 (REF,MONEY) VALUES (A123456,456,67); 
INSERT INTO TABLE1 (REF,MONEY) VALUES (A123456,456,67); 

내 코드가 잘 작동하지 않아 ... 누군가가 나를 도와 줄 수 있기를 바랍니다 :).

안부.

+0

쉼표로 구분되지 않은 문자열 (예 :'B123456 mr awesome great strt germany')을 쉼표로 구분 된 값 ('B123456, mr awesome, great strt')으로 변환하는 논리가 정확히 어떻게 작동합니까? – decPL

+0

음 ... 나는이 질문을하기 전에 본 것 같아요. :) – Pikoh

+0

안녕하세요 pikoh !, 예 이것은 당신의 코드입니다,하지만 몇 가지 문제가 있고 저는 스페인어 섹션에서 더 많은 질문으로 당신을 압도하고 싶지 않습니다. (Y_Y에 대해 유감스럽게 생각한다.) – Bigby

답변

0

처음에는 1A와 123456 사이의 공간을 볼 수 없었습니다. 그래서 (campos [0] == "1A") 작동하지 않습니다. 당신은 문자열 또는 유사한 기능을 사용할 수 있습니다 .. (캄포스 [0] .contains ("1A")이 번갈아

가 두 번째로 당신이 A123456을 얻을 1A123456을 분할해야 startswith을 사용하여 평가할 수있는 경우 -. 사용이 검사를 수행하는 방법을 포함 (2B와 같음)

셋째, 문자열을 ''로 분리하면 예상되는 문자열보다 더 많은 문자열이 생성 될 수 있습니다. 2B123456 Mr stest great germany -이 경우에는 훌륭한 멋진 문자열입니다. campos [1] & campos [2] campos [3] & campos [1 = 4] 2B의 경우에 연결해야합니다.

네 번째 f 또는 원하는 경우 두 개의 값을 얻기 위해 구분자로 campos [1]을 나눌 필요가있는 1A 사례

희망 사항은이 문제를 해결하기위한 충분한 지침을 제공합니다. 내가 좋은 해결책을 발견

0

몇 가지 조사 후와 아닐와 Pikoh의 도움으로 :

string mydate = DateTime.Now.ToString("yyyyMMdd"); 
        string AÑO = DateTime.Now.ToString("yyyy"); 
        string MES = DateTime.Now.ToString("MM"); 
        string DIA = DateTime.Now.ToString("dd"); 
        string sql = "INSERT "; 
        string[] campos = fila.Split(' '); 

        if (campos[0].StartsWith("1H")) 
        { 

         sql += "INTO TABLE (VALUES,VALUES,VALUES) VALUES (" + "'" + mydate + "'" + "," + "'" + campos[0].Substring(1, 8) + "'" + "," + "'" + campos[0].Substring(9, 7) + "'" + "," + "'" + campos[8] + "'" + ");"; 

, 데이터를 삽입하고 문자열을 조작 좋았지 만, 지금은 마지막 문제를 가지고있는 내 논리가 올바른 정보를 선택할 수 없기 때문에 특정 문자열에 "백 스페이스"를 만들어야 할 경우 어떻게됩니까? 안부.

+0

무엇을 의미합니까? 예제를 통해 보여 줄 수 있고 코드를 지적 해 주시겠습니까? – anil