从文本文件创建SQL语句 - C#

时间:2016-10-05 10:31:44

标签: c# sql string

早上好,

我正在尝试创建一个在.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文档,只有两行以“1A”或“2B”开头,例如:< / p>

1A123456 456,67
2B123456先生非常棒的德国人
1A123456 456,67
2B123456先生非常棒的德国人
2B123456先生非常棒的德国人
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);

我的代码工作得不好......我希望有人可以帮我一个小事:)。

问候。

2 个答案:

答案 0 :(得分:0)

首先,我看不到1A和123456之间的空间。所以,如果(campos [0] ==“1A”)将不起作用。使用contains方法进行此检查 - 如果(campos [0] .contains(“1A”)。您可以使用startswith来交替评估

其次,您需要拆分1A123456以获得A123456 ..您可以使用子串或类似的功能。 (2B相同)

第三,你将字符串拆分为'' - 这可能会导致字符串多于预期的字符串。 2B123456先生棒极了德国 - 在这种情况下,伟大的伟大的标准都是不同的。你需要输入逻辑来连接campos [1]&amp;坎波斯[2]和坎波斯[3]&amp;坎波斯[1 = 4]在2B的情况下......

第四,对于1A案例,您需要使用,作为分隔符来分割campos [1]以获得您想要的两个值

希望这能为您提供足够的指导来解决您的问题。

答案 1 :(得分:0)

经过一些研究,在anil和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] + "'" + ");";

插入数据和操作字符串很好,但现在我遇到了最后一个问题,

如果我需要制作&#34;退格&#34;会发生什么?因为我的逻辑无法选择正确的信息?问候。