0

我想将数据从.txt文件导入数据库。问题是,我不需要.txt文件的第一行和第一列。我怎样才能跳过它们?数据用“;”分隔。

以下是我尝试过的代码 -

private void txtinsert ()
{
    string constr = (@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = C:\Users\szabo\Desktop\Programozas\C#\Etelek (2016)\Start\Start\GOOD_FOOD.mdf; Integrated Security = True; Connect Timeout = 30");
    SqlConnection con = new SqlConnection(constr);
    StreamReader sr = new StreamReader(Application.StartupPath + @"\..\..\meniu.txt");
    string sir;
    char[] split = {';'};
    con.Open();
    SqlCommand cmd = new SqlCommand();
    while ((sir = sr.ReadLine()) != null)
    {
        string[] siruri = sir.Split(split);
        cmd = new SqlCommand("INSERT INTO Meniu (id_produs) VALUES (@id_produs)", con);
        cmd.Parameters.AddWithValue("@id_produs", siruri[0].Trim());
        cmd.ExecuteNonQuery();
    }    
}
4

2 回答 2

1

您可以使用变量来指示您不想要哪些行,并且您知道处理了多少行

private void txtinsert ()
{

    string constr = (@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = C:\Users\szabo\Desktop\Programozas\C#\Etelek (2016)\Start\Start\GOOD_FOOD.mdf; Integrated Security = True; Connect Timeout = 30");
    SqlConnection con = new SqlConnection(constr);
    StreamReader sr = new StreamReader(Application.StartupPath + @"\..\..\meniu.txt");
    string sir;
    char[] split = {';'};
    int RowNum = 0;
    con.Open();
    SqlCommand cmd = new SqlCommand();
    while ((sir = sr.ReadLine()) != null)
    {
        if (RowNum > 0) {
            string[] siruri = sir.Split(split);
            cmd = new SqlCommand("INSERT INTO Meniu (id_produs) VALUES (@id_produs)", con);
            cmd.Parameters.AddWithValue("@id_produs", siruri[0].Trim());
            cmd.ExecuteNonQuery();
            
       }
       RowNum  +=1;
    }    
}
于 2020-10-26T16:56:45.393 回答
0

while 您可以阅读循环外的第一行。

sir = sr.ReadLine();
while ((sir = sr.ReadLine()) != null)
{
    string[] siruri = sir.Split(split);
    cmd = new SqlCommand("INSERT INTO Meniu (id_produs) VALUES (@id_produs)", con);
    cmd.Parameters.AddWithValue("@id_produs", siruri[0].Trim());
    cmd.ExecuteNonQuery();

} 
于 2020-10-26T16:35:06.517 回答