从 CSV 插入数据时出现问题
Issue with inserting data from CSV
我在将 CSV 导入数据库时遇到问题,更准确地说,我从 TXT 文件生成 CSV 文件,然后尝试将其导入数据库。应用程序挂在应该将数据插入 table 的函数上。即使没有 csv 文件,我也尝试了各种选项,只是通过直接发送测试数据来做到这一点。
我在这里做错了什么或者我错过了什么?
//Uruchomienie importu z CSV do tabeli
private void Loading_Click(object sender, EventArgs e)
{
Cursor = Cursors.WaitCursor;
DataTable zaimportowane = WezDane();
if (zaimportowane == null) return;
ZapiszDane(zaimportowane);
MessageBox.Show("load data succ.......!","LoadingDB");
NazwaCSV.Text = null;
Cursor = Cursors.Default;
}
//Tutaj ładują się dane po zaimportowaniu pliku CSV
private DataTable WezDane()
{
DataTable zaimportowane = new DataTable();
try
{
using(StreamReader odczyt = new StreamReader(NazwaCSV.Text))
{
string naglowek = odczyt.ReadLine();
if (string.IsNullOrEmpty(naglowek))
{
MessageBox.Show("Brak danych nagłówka", "DataTableDB");
return null;
}
string[] Kolumny = naglowek.Split(';');
foreach(string Kolumna in Kolumny)
{
zaimportowane.Columns.Add(Kolumna);
}
while (!odczyt.EndOfStream)
{
string linia = odczyt.ReadLine();
if (string.IsNullOrEmpty(linia)) continue;
string[] pola = linia.Split(';');
DataRow zaimportowanyWiersz = zaimportowane.NewRow();
for(int i = 0;i< pola.Count(); i++)
{
zaimportowanyWiersz[i] = pola[i];
}
zaimportowane.Rows.Add(zaimportowanyWiersz);
}
}
}
catch
{
MessageBox.Show("Problem z odczytem pliku :(", "DataTableDB");
}
return zaimportowane;
}
//Wpis danych do tabeli
private void ZapiszDane(DataTable zaimportowane_dane)
{
using (conn)
{
conn.Open();
foreach ( DataRow zaimportowanyWiersz in zaimportowane_dane.Rows)
{
SqlCommand SQLcomm = new SqlCommand(@"insert into
wyscig(INDEX,TAG ID,TAG COUNT,DATE,READ ON ANT)" +
@"values ("+zaimportowane_dane.Columns[0]+
","+zaimportowane_dane.Columns[1]+
","+zaimportowane_dane.Columns[2]+
","+zaimportowane_dane.Columns[3]+
","+zaimportowane_dane.Columns[4]+")");
SQLcomm.Parameters.AddWithValue(zaimportowane_dane.Columns[0].Equals("INDEX").ToString(), "TEST");
SQLcomm.Parameters.AddWithValue(zaimportowane_dane.Columns[1].Equals("TAG ID").ToString(), "TEST");
SQLcomm.Parameters.AddWithValue(zaimportowane_dane.Columns[2].Equals("TAG COUNT").ToString(), "TEST");
SQLcomm.Parameters.AddWithValue(zaimportowane_dane.Columns[3].Equals("DATE").ToString(), "TEST");
SQLcomm.Parameters.AddWithValue(zaimportowane_dane.Columns[4].Equals("READ ON ANT").ToString(), "TEST");
SQLcomm.ExecuteNonQuery();
conn.Close();
}
}
}
一些尝试:
使用值提取您的 INSERT 语句并尝试 运行 针对您的数据库以确保它在该级别工作(检查语法 and/or 任何锁定问题)
您似乎正在关闭 for 循环中的连接,并尝试移动它。
有一个答案,我需要更改 table 中的字段,因为它们的命名,看起来我把它变得比需要的更难
conn.Open();
using (StreamReader reader = new StreamReader(NazwaCSV.Text))
{
reader.ReadLine();
string line;
while (!reader.EndOfStream)
{
line = reader.ReadLine();
string[] pola = line.Split(';');
using (SqlCommand sc = new SqlCommand())
{
sc.CommandText = "INSERT INTO Wyscig(Pozycja,nrTAG,cTAG,czas,dat) VALUES (@poz,@tagid,@tagcount,@data,@odczyt)";
sc.Connection = conn;
sc.Parameters.Add(new SqlParameter("@poz", pola[0]));
sc.Parameters.Add(new SqlParameter("@tagid", pola[1]));
sc.Parameters.Add(new SqlParameter("@tagcount", pola[2]));
sc.Parameters.Add(new SqlParameter("@data", pola[3]));
sc.Parameters.Add(new SqlParameter("@odczyt", pola[4]));
sc.ExecuteNonQuery();
}
}
}
conn.Close();
我在将 CSV 导入数据库时遇到问题,更准确地说,我从 TXT 文件生成 CSV 文件,然后尝试将其导入数据库。应用程序挂在应该将数据插入 table 的函数上。即使没有 csv 文件,我也尝试了各种选项,只是通过直接发送测试数据来做到这一点。 我在这里做错了什么或者我错过了什么?
//Uruchomienie importu z CSV do tabeli
private void Loading_Click(object sender, EventArgs e)
{
Cursor = Cursors.WaitCursor;
DataTable zaimportowane = WezDane();
if (zaimportowane == null) return;
ZapiszDane(zaimportowane);
MessageBox.Show("load data succ.......!","LoadingDB");
NazwaCSV.Text = null;
Cursor = Cursors.Default;
}
//Tutaj ładują się dane po zaimportowaniu pliku CSV
private DataTable WezDane()
{
DataTable zaimportowane = new DataTable();
try
{
using(StreamReader odczyt = new StreamReader(NazwaCSV.Text))
{
string naglowek = odczyt.ReadLine();
if (string.IsNullOrEmpty(naglowek))
{
MessageBox.Show("Brak danych nagłówka", "DataTableDB");
return null;
}
string[] Kolumny = naglowek.Split(';');
foreach(string Kolumna in Kolumny)
{
zaimportowane.Columns.Add(Kolumna);
}
while (!odczyt.EndOfStream)
{
string linia = odczyt.ReadLine();
if (string.IsNullOrEmpty(linia)) continue;
string[] pola = linia.Split(';');
DataRow zaimportowanyWiersz = zaimportowane.NewRow();
for(int i = 0;i< pola.Count(); i++)
{
zaimportowanyWiersz[i] = pola[i];
}
zaimportowane.Rows.Add(zaimportowanyWiersz);
}
}
}
catch
{
MessageBox.Show("Problem z odczytem pliku :(", "DataTableDB");
}
return zaimportowane;
}
//Wpis danych do tabeli
private void ZapiszDane(DataTable zaimportowane_dane)
{
using (conn)
{
conn.Open();
foreach ( DataRow zaimportowanyWiersz in zaimportowane_dane.Rows)
{
SqlCommand SQLcomm = new SqlCommand(@"insert into
wyscig(INDEX,TAG ID,TAG COUNT,DATE,READ ON ANT)" +
@"values ("+zaimportowane_dane.Columns[0]+
","+zaimportowane_dane.Columns[1]+
","+zaimportowane_dane.Columns[2]+
","+zaimportowane_dane.Columns[3]+
","+zaimportowane_dane.Columns[4]+")");
SQLcomm.Parameters.AddWithValue(zaimportowane_dane.Columns[0].Equals("INDEX").ToString(), "TEST");
SQLcomm.Parameters.AddWithValue(zaimportowane_dane.Columns[1].Equals("TAG ID").ToString(), "TEST");
SQLcomm.Parameters.AddWithValue(zaimportowane_dane.Columns[2].Equals("TAG COUNT").ToString(), "TEST");
SQLcomm.Parameters.AddWithValue(zaimportowane_dane.Columns[3].Equals("DATE").ToString(), "TEST");
SQLcomm.Parameters.AddWithValue(zaimportowane_dane.Columns[4].Equals("READ ON ANT").ToString(), "TEST");
SQLcomm.ExecuteNonQuery();
conn.Close();
}
}
}
一些尝试:
使用值提取您的 INSERT 语句并尝试 运行 针对您的数据库以确保它在该级别工作(检查语法 and/or 任何锁定问题)
您似乎正在关闭 for 循环中的连接,并尝试移动它。
有一个答案,我需要更改 table 中的字段,因为它们的命名,看起来我把它变得比需要的更难
conn.Open();
using (StreamReader reader = new StreamReader(NazwaCSV.Text))
{
reader.ReadLine();
string line;
while (!reader.EndOfStream)
{
line = reader.ReadLine();
string[] pola = line.Split(';');
using (SqlCommand sc = new SqlCommand())
{
sc.CommandText = "INSERT INTO Wyscig(Pozycja,nrTAG,cTAG,czas,dat) VALUES (@poz,@tagid,@tagcount,@data,@odczyt)";
sc.Connection = conn;
sc.Parameters.Add(new SqlParameter("@poz", pola[0]));
sc.Parameters.Add(new SqlParameter("@tagid", pola[1]));
sc.Parameters.Add(new SqlParameter("@tagcount", pola[2]));
sc.Parameters.Add(new SqlParameter("@data", pola[3]));
sc.Parameters.Add(new SqlParameter("@odczyt", pola[4]));
sc.ExecuteNonQuery();
}
}
}
conn.Close();