http://www.codeproject.com/KB/database/CsvReader.aspx
还是没搞定 具体看我最下面的留言
http://topic.csdn.net/u/20110103/22/8631dd1a-f789-4871-9f0b-882014f0e3f3.html
我纠结啊。。 弄了个别的读取方法 现在凑合实现快速读取了。
新问题来了。
这个不能直接从csv转access 因为 csv的头三行是和下面数据不一样规则的几行说明 所以我读出来后删除了前面3行
然后绑定到dataGridView 现在需要导入access数据库。。希望高手来帮帮忙 谢谢了。
由于数据量大 怎么能实现快速的将dataGridView数据批量插入access数据库 我没绑定 通过按钮导入
数据量大概3W行。。
急需啊 明天上午要写好的 我愁了。。
只能100分 会弄的来 要实例代码 thank u
26 个解决方案
#1
路过 期待答案 学习一下
#2
额 报表
#4
这个好像是vb的哦。 不过可以试试
#5
晕哦 米人来帮忙么。 100分啊。。
呼叫梦大到来。。
呼叫梦大到来。。
#6
跟我的问题一样,只是我是SQL2008而已。
#7
#8
#9
#10
access不熟,但3W行的数据也很小啊,你循环插入都非常的快。
#11
#12
#13
#14
/// <summary>
/// database update - delete, insert, modify
/// </summary>
/// <param name="cmdText"></param>
private void ExecuteAccessNonQuery(string cmdText)
{
if (!dbConnectOK)
return;
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
conn.Open();
OleDbCommand cmd = new OleDbCommand(cmdText, conn);
cmd.CommandType = CommandType.Text;
using (OleDbTransaction trans = conn.BeginTransaction())
{
cmd.Transaction = trans;
try
{
cmd.ExecuteNonQuery();
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
throw;
}
}
}
}
//遍历datagridview,构造sql语句,调用上面的方法插入
string sqlCmd = string.empty;
foreach(Datagridview row in datagridview1.Rows)
{
sqlCmd = string.format(@"insert into Table_Name (column1, column2, ...) Values ({0}, '{1}', ...)", intValue, StringValue, ...);
ExecuteAccessNonQuery(sqlCmd);
}
#15
循环插入
14楼方法可行
14楼方法可行
#16
这个foeach里应该怎么获得 我当前读到的这行的每列数据呢。
#17
!dbConnectOK 这是个什么东西。
connectionString 这个我知道是连接字符串。。
connectionString 这个我知道是连接字符串。。
#18
话说 那个我改成for循环了。
if (this.dgv_show.DataSource != null)
{
DialogResult result = MessageBox.Show("确定保存至数据库?(存储前请务必核对准确)", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (result == DialogResult.OK)
{
for (int i = 0; i < dgv_show.Rows.Count - 1; i++)
{
string cmdInsert = String.Empty;
cmdInsert = "insert into web_content (data1,data2,data3)";
cmdInsert += "VALUES('" + this.dgv_show.Rows[i].Cells[0].Value + "'";
cmdInsert += ",'" + this.dgv_show.Rows[i].Cells[1].Value + "'";
cmdInsert += "," + this.dgv_show.Rows[i].Cells[2].Value + ")";
ExecuteAccessNonQuery(cmdInsert);
}
}
else
{
MessageBox.Show("未存储!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
#19
#20
这个代码就是参考的,dbConnectionOK是一个bool变量,ExecuteAccessNonQuery方法我是放到一个类中的,在这个方法的构造函数里我尝试连接数据库,并且标记dbConnectionOK的值,你也可以把它去掉
foreach那块是我直接写的,语法可能不正确,下面的是正确的,使用foreach要比for好
string v1 = string.Empty;
string v2 = string.Empty;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
v1 = row.Cells[0].Value.ToString(); //第一列的值
v2 = row.Cells[1].Value.ToString(); // 第二列的值
}
#21
额 明白了。。
不过 我那个用for的 写入数据库 感觉要卡死了 等半天才好1000行数据测试。
但是我实际问题 要解决3W行数据。。 怎么能做到不卡呢。
#22
access好像不支持同时执行多条sql语句(像SQL Server那样),好像只能一条条执行,
下面的代码应该比你的for循环效率高
下面的代码应该比你的for循环效率高
string cmdInsert = String.Empty;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
cmdInsert = string.Format(@"insert into web_content (data1,data2,data3) values('{0}','{1}','{2}')",
row.Cells[0].Value.ToString(),
row.Cells[1].Value.ToString(),
row.Cells[2].Value.ToString());
ExecuteAccessNonQuery(cmdInsert);
}
#23
郁闷哦 感觉速度差不多 看来我有必要加一个导入进度条了 好显示的人性化些
#24
所谓的 批量 也是 一行一行来的
或者你 把 在 外面的整张表 insert 到 数据库表
或者你 把 在 外面的整张表 insert 到 数据库表
#25
有DataTable没?有的话我来救场.
#26
o(︶︿︶)o 唉 尼玛j8 boss 收完人家预付的钱 我给写了个半成品就给人家了 木有做细致的筛选.
反正我也离开了 但是尼玛倒霉boss竟然这个项目没给我money. 555
现在结贴了 回答的都有分
反正我也离开了 但是尼玛倒霉boss竟然这个项目没给我money. 555
现在结贴了 回答的都有分
#1
路过 期待答案 学习一下
#2
额 报表
#3
#4
这个好像是vb的哦。 不过可以试试
#5
晕哦 米人来帮忙么。 100分啊。。
呼叫梦大到来。。
呼叫梦大到来。。
#6
跟我的问题一样,只是我是SQL2008而已。
#7
#8
#9
#10
access不熟,但3W行的数据也很小啊,你循环插入都非常的快。
#11
#12
#13
#14
/// <summary>
/// database update - delete, insert, modify
/// </summary>
/// <param name="cmdText"></param>
private void ExecuteAccessNonQuery(string cmdText)
{
if (!dbConnectOK)
return;
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
conn.Open();
OleDbCommand cmd = new OleDbCommand(cmdText, conn);
cmd.CommandType = CommandType.Text;
using (OleDbTransaction trans = conn.BeginTransaction())
{
cmd.Transaction = trans;
try
{
cmd.ExecuteNonQuery();
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
throw;
}
}
}
}
//遍历datagridview,构造sql语句,调用上面的方法插入
string sqlCmd = string.empty;
foreach(Datagridview row in datagridview1.Rows)
{
sqlCmd = string.format(@"insert into Table_Name (column1, column2, ...) Values ({0}, '{1}', ...)", intValue, StringValue, ...);
ExecuteAccessNonQuery(sqlCmd);
}
#15
循环插入
14楼方法可行
14楼方法可行
#16
这个foeach里应该怎么获得 我当前读到的这行的每列数据呢。
#17
!dbConnectOK 这是个什么东西。
connectionString 这个我知道是连接字符串。。
connectionString 这个我知道是连接字符串。。
#18
话说 那个我改成for循环了。
if (this.dgv_show.DataSource != null)
{
DialogResult result = MessageBox.Show("确定保存至数据库?(存储前请务必核对准确)", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (result == DialogResult.OK)
{
for (int i = 0; i < dgv_show.Rows.Count - 1; i++)
{
string cmdInsert = String.Empty;
cmdInsert = "insert into web_content (data1,data2,data3)";
cmdInsert += "VALUES('" + this.dgv_show.Rows[i].Cells[0].Value + "'";
cmdInsert += ",'" + this.dgv_show.Rows[i].Cells[1].Value + "'";
cmdInsert += "," + this.dgv_show.Rows[i].Cells[2].Value + ")";
ExecuteAccessNonQuery(cmdInsert);
}
}
else
{
MessageBox.Show("未存储!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
#19
#20
这个代码就是参考的,dbConnectionOK是一个bool变量,ExecuteAccessNonQuery方法我是放到一个类中的,在这个方法的构造函数里我尝试连接数据库,并且标记dbConnectionOK的值,你也可以把它去掉
foreach那块是我直接写的,语法可能不正确,下面的是正确的,使用foreach要比for好
string v1 = string.Empty;
string v2 = string.Empty;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
v1 = row.Cells[0].Value.ToString(); //第一列的值
v2 = row.Cells[1].Value.ToString(); // 第二列的值
}
#21
额 明白了。。
不过 我那个用for的 写入数据库 感觉要卡死了 等半天才好1000行数据测试。
但是我实际问题 要解决3W行数据。。 怎么能做到不卡呢。
#22
access好像不支持同时执行多条sql语句(像SQL Server那样),好像只能一条条执行,
下面的代码应该比你的for循环效率高
下面的代码应该比你的for循环效率高
string cmdInsert = String.Empty;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
cmdInsert = string.Format(@"insert into web_content (data1,data2,data3) values('{0}','{1}','{2}')",
row.Cells[0].Value.ToString(),
row.Cells[1].Value.ToString(),
row.Cells[2].Value.ToString());
ExecuteAccessNonQuery(cmdInsert);
}
#23
郁闷哦 感觉速度差不多 看来我有必要加一个导入进度条了 好显示的人性化些
#24
所谓的 批量 也是 一行一行来的
或者你 把 在 外面的整张表 insert 到 数据库表
或者你 把 在 外面的整张表 insert 到 数据库表
#25
有DataTable没?有的话我来救场.
#26
o(︶︿︶)o 唉 尼玛j8 boss 收完人家预付的钱 我给写了个半成品就给人家了 木有做细致的筛选.
反正我也离开了 但是尼玛倒霉boss竟然这个项目没给我money. 555
现在结贴了 回答的都有分
反正我也离开了 但是尼玛倒霉boss竟然这个项目没给我money. 555
现在结贴了 回答的都有分