求大神帮忙啊

sunxi7161802 2012-11-09 10:23:16
if (dlg.ShowDialog() == DialogResult.OK) 第一次打开导入数据库没问题 第二次再点浏览的时候报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”
代码:
private void butdr_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Excel文件(*.xls)|*.xls";
dlg.RestoreDirectory = true;
if (dlg.ShowDialog() == DialogResult.OK)
{
string filePath = dlg.FileName;
this.textBox1.Text = filePath;
}

}

private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Length == 0)
{
MessageBox.Show("请选择导入数据的Execl文件");
}
else
{
try
{
OleDbConnectionStringBuilder connectStringBuilder = new OleDbConnectionStringBuilder();
connectStringBuilder.DataSource = this.textBox1.Text.Trim();
connectStringBuilder.Provider = "Microsoft.Jet.OLEDB.4.0";
connectStringBuilder.Add("Extended Properties", "Excel 8.0");
using (OleDbConnection cn = new OleDbConnection(connectStringBuilder.ConnectionString))
{
DataSet ds = new DataSet();
string sql = "Select * from [农户信息表$]";
OleDbCommand cmdLiming = new OleDbCommand(sql, cn);
cn.Open();
using (OleDbDataReader drLiming = cmdLiming.ExecuteReader())
{
ds.Load(drLiming, LoadOption.OverwriteChanges, new string[] { "Sheet1" });
DataTable dt = ds.Tables["Sheet1"];
if (dt.Rows.Count > 0)
{
//dataGridView1.DataSource = dt;
for (int i = 0; i < dt.Rows.Count; i++)
{
//写入数据库数据
string Mysql = "insert into users ([number],[name],sfzh,hkbh,yhzh,khyh,skhhh,tel,address,Remark) values('" + dt.Rows[i]["农户编号"].ToString() + "','" + dt.Rows[i]["户主姓名"].ToString() + "','" + dt.Rows[i]["身份证号"].ToString() + "','" + dt.Rows[i]["户口本号"].ToString() + "','" + dt.Rows[i]["银行账号"].ToString() + "','" + dt.Rows[i]["开户银行"].ToString() + "'" +
",'" + dt.Rows[i]["收款行行号"].ToString() + "','" + dt.Rows[i]["联系电话_(或村委会电话)"].ToString() + "','" + dt.Rows[i]["家庭住址"].ToString() + "','')";
WebBase.Data.AcDb.Exec(Mysql);
}

MessageBox.Show("数据导入成功!");

}
else
{
MessageBox.Show("请检查你的Excel中是否存在数据");
}
drLiming.Close();
}

cn.Close();
}
}

catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

}
帮我看看那的错啊
...全文
156 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
conan8126 2012-11-09
  • 打赏
  • 举报
回复
应该是第一次读取这个文件后,文件资源没有被释放,某个进程还在使用这个文件。 你可以从进程管理中将Excel相关的进程都关闭,然后再试试
sunxi7161802 2012-11-09
  • 打赏
  • 举报
回复
不连接数据库直接导入到dataGridView不报错导入到数据库就报错了
sunxi7161802 2012-11-09
  • 打赏
  • 举报
回复
引用 3 楼 findcaiyzh 的回复:
哪行报的错?
if (dlg.ShowDialog() == DialogResult.OK)这行 第二次导入的时候 我看我后台也没有什么excel进程啊
宝_爸 2012-11-09
  • 打赏
  • 举报
回复
哪行报的错?
王子文龙 2012-11-09
  • 打赏
  • 举报
回复
操作完excel之后就将进程关闭

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧