早上好,
我正在尝试创建一个在.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);
我的代码工作得不好......我希望有人可以帮我一个小事:)。
问候。
答案 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;会发生什么?因为我的逻辑无法选择正确的信息?问候。