.net的效率问题。文本文件导入数据库

FlowerJunjie 2006-09-02 10:26:12
用C# 做了一个windows应用程序,将一个文本文件导入数据库。
14M的文本文件,程序跑起来便没有响应了,看了下数据库,数据确实导入了
请问怎么才能提高程序的执行效率。
代码贴下面,请指出不足:
private void insertSql(string str)
{
SqlConnection conn =new SqlConnection("server=192.168.0.6;uid=sa;pwd=sa;database=databasename");
SqlCommand cmd = new SqlCommand("insert into test2005 values ('"+ str+"')",conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
cmd.Dispose();

}

private void button1_Click(object sender, System.EventArgs e)
{

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
System.IO.StreamReader sr = new System.IO.StreamReader(openFileDialog1.FileName);
string input;
while ( (input=sr.ReadLine()) != null)
{
insertSql(input);
}
MessageBox.Show("导入成功!");
sr.Close();
}

}
...全文
351 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
amnoh 2006-09-02
  • 打赏
  • 举报
回复
将所有的文本先读出来,然后一次性传过去,
执行插入操作时只用把Connenction打开一次,会快很多的
fengjun19912 2006-09-02
  • 打赏
  • 举报
回复
这个程序当然会很慢的,修改一下第一个方法insertSql(string str)

接口变一下insertSql(string[] str) 这样可以减少访问数据库的时间,效率会快很多的
FlowerJunjie 2006-09-02
  • 打赏
  • 举报
回复
没人回答?
再顶
没人做过类似的东西么/
artak 2006-09-02
  • 打赏
  • 举报
回复
mark
FlowerJunjie 2006-09-02
  • 打赏
  • 举报
回复
再问:
程序执行期间,如何给用户一个合理的提示。
将程序执行的进度显示出来
zhgroup 2006-09-02
  • 打赏
  • 举报
回复
private void button1_Click(object sender, System.EventArgs e)
{

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
System.IO.StreamReader sr = new System.IO.StreamReader(openFileDialog1.FileName);
string input;
SqlConnection conn =new SqlConnection("server=192.168.0.6;uid=sa;pwd=sa;database=databasename");
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
conn.Open();

try
{
while ( (input=sr.ReadLine()) != null)
{
cmd.Command = "insert into test2005 values ('"+ input+"')";
cmd.ExecuteNonQuery();
}
finally
{
cmd.Dispose();
conn.Dispose();
}
MessageBox.Show("导入成功!");
sr.Close();
}

}
jointan 2006-09-02
  • 打赏
  • 举报
回复
private void insertSql(ArrayList strs)
{
SqlConnection conn =new SqlConnection("server=192.168.0.6;uid=sa;pwd=sa;database=databasename");
SqlCommand cmd = new SqlCommand(conn);
conn.Open();
foreach(string str in strs)
{
cmd.Command="insert into test2005 values ('"+ str+"')";
cmd.ExecuteNonQuery();
}
conn.Close();
cmd.Dispose();

}

private void button1_Click(object sender, System.EventArgs e)
{

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
System.IO.StreamReader sr = new System.IO.StreamReader(openFileDialog1.FileName);
string input;
ArrayList strs=new ArrayList();
while ( (input=sr.ReadLine()) != null)
{
strs.Add(input);
}
insertSql(strs);

MessageBox.Show("导入成功!");
sr.Close();
}

}


FlowerJunjie 2006-09-02
  • 打赏
  • 举报
回复
说明详细点啊

小弟水平很菜阿
最好有代码提示

110,538

社区成员

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

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

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