我有一个问题,我试图导入一个excel文件到mysql数据库。它正在工作,但它只导入了1行。
OleDbConnection olconn = new OleDbConnection(conStr);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * From [" + comboBox1.Text + "]", olconn);
dt = new DataTable();
DataSet ds = new DataSet();
myDataAdapter.Fill(ds);
olconn.Close();
dataGridView1.DataSource = dt;
//gridControl1.DataSource = dt;
connExcel.Close();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
MySqlConnection con = new MySqlConnection(connStr);
string query = "Insert into excel(IDExcel, studentnumber, fullname, course, yearandsection) Values('" +
ds.Tables[0].Rows[i][0].ToString() + "','" + ds.Tables[0].Rows[i][1].ToString() + "','" + ds.Tables[0].Rows[i][2].ToString() + "','" + ds.Tables[0].Rows[i][3].ToString() + "','" + ds.Tables[0].Rows[i][4].ToString() + "')";
con.Open();
MySqlCommand cmd = new MySqlCommand(query, con);
cmd.ExecuteNonQuery();
con.Close();
}
MessageBox.Show("Done Importing!", "Congratulations!", MessageBoxButtons.OK,MessageBoxIcon.Information);发布于 2017-09-22 01:52:58
首先,您的查询对sql注入是开放的,我将研究参数化查询并解决这个问题。https://www.dotnetperls.com/sqlparameter
您应该打开连接,并且只使用一条insert语句,就像在MySQL上所做的那样。合并所有的值,然后做所有的事情一次。完成后关闭连接。你现在使用的方式效率非常低。
请查看此答案以获得更多帮助。Most efficient way to insert Rows into MySQL Database
发布于 2017-09-22 01:56:52
dataGridView1.DataSource = dt;嗯,我看到的一件事是,上面的行没有任何意义,因为dt没有链接到数据集……您可以初始化dt或只使用ds.Tables。
您是否还可以在代码中的某处放置一个中断,然后在Debug -> Windows ->即时窗口中执行以下行:?ds.Tables.Rows.Count
只是为了验证你是否真的得到了多条记录
https://stackoverflow.com/questions/46350254
复制相似问题