C# 通过C#代码向Access数据库批量插入数据
如题,请给出简单列子,谢谢。解决问题后再追加100分!请问谁能再解释一下Access的事务操作?有个简单的能运行的代码更好,谢谢...
如题,请给出简单列子,谢谢。
解决问题后再追加100分!
请问谁能再解释一下Access的事务操作?有个简单的能运行的代码更好,谢谢 展开
解决问题后再追加100分!
请问谁能再解释一下Access的事务操作?有个简单的能运行的代码更好,谢谢 展开
6个回答
展开全部
难道你不知道“数据库事物”是什么吗?数据库事务就是用于批量对数据库进行插入、修改、删除数据用的。比如,如果一条条向数据库插入数据,如果数据有成千上万条,那么这种插入效率是不能忍受的,会花很长时间,数据库事务就是用来解决这种问题。如果你不明白什么是数据库事务,我建议你找找相关资料来看一下。
用事务,比如:
OleDbConnection conn=....;
OleDbTransaction trans=null;
try
{
trans = conn.BeginTransaction();
OleDbCommand cmd = conn.CreateCommand();
cmd.Transaction = trans;
//执行插入数据的SQL操作
trans.Commit();
cmd.Dispose();
trans.Dispose();
}
catch(Exception e)
{
}
用事务,比如:
OleDbConnection conn=....;
OleDbTransaction trans=null;
try
{
trans = conn.BeginTransaction();
OleDbCommand cmd = conn.CreateCommand();
cmd.Transaction = trans;
//执行插入数据的SQL操作
trans.Commit();
cmd.Dispose();
trans.Dispose();
}
catch(Exception e)
{
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我这个绝对行,不行你砍我。
解释一下,参数:sql:就是Sql语句了。
Accesspath:Access的路径。就像 c:\abc.mdb 一样。
记住引用 System.Data.OleDb;
就是: using System.Data.OleDb;
你要是添加批量数据库,就循环调用这个方法就可以了。
public void Insert(string sql,string AccessPath)
{
string connectionstring = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source="+AccessPath;
OleDbConnection conn = new OleDbConnection(connectionstring);
OleDbCommand comm = new OleDbCommand(sql, conn);
try
{
conn.Open();
comm.ExecuteNonQuery();
}
catch
{
//出错了,这里的代码,你自己写。
}
finally
{
conn.Close();
}
}
access本身没有批量添加数据的功能。因为insert语句本身只能插入一条语句。
sqlserver本身倒是可以,你可以在多个insert语句之间用; 间隔就可以了。也就是说 你连接一次数据库,可以插入多条记录。但access本身不行。我用过很长时间了。access本身就是小型就用,效率不高,但一般单机软件足够用了。
你下面的插入 空白的,我也不知道了。
如果你觉得Access不好用。建议你用SQLite 。和access一样,都是单文件数据库。 但效率要高好多。
希望能帮到你
解释一下,参数:sql:就是Sql语句了。
Accesspath:Access的路径。就像 c:\abc.mdb 一样。
记住引用 System.Data.OleDb;
就是: using System.Data.OleDb;
你要是添加批量数据库,就循环调用这个方法就可以了。
public void Insert(string sql,string AccessPath)
{
string connectionstring = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source="+AccessPath;
OleDbConnection conn = new OleDbConnection(connectionstring);
OleDbCommand comm = new OleDbCommand(sql, conn);
try
{
conn.Open();
comm.ExecuteNonQuery();
}
catch
{
//出错了,这里的代码,你自己写。
}
finally
{
conn.Close();
}
}
access本身没有批量添加数据的功能。因为insert语句本身只能插入一条语句。
sqlserver本身倒是可以,你可以在多个insert语句之间用; 间隔就可以了。也就是说 你连接一次数据库,可以插入多条记录。但access本身不行。我用过很长时间了。access本身就是小型就用,效率不高,但一般单机软件足够用了。
你下面的插入 空白的,我也不知道了。
如果你觉得Access不好用。建议你用SQLite 。和access一样,都是单文件数据库。 但效率要高好多。
希望能帮到你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
批量新增:
public bool DataInsert()
{
try
{
this.sqlCommand = "insert into " + this.tableName + "(";
int count = this.alFieldItems.Count;
string str = string.Empty;
for (int i = 0; i < (count - 1); i++)
{
this.sqlCommand = this.sqlCommand + ((DBKeyItem) this.alFieldItems[i]).fieldName.ToString() + ",";
str = str + "@" + ((DBKeyItem) this.alFieldItems[i]).fieldName.ToString() + ",";
}
this.sqlCommand = this.sqlCommand + ((DBKeyItem) this.alFieldItems[count - 1]).fieldName.ToString();
str = str + "@" + ((DBKeyItem) this.alFieldItems[count - 1]).fieldName.ToString();
this.sqlCommand = this.sqlCommand + ") values(";
this.sqlCommand = this.sqlCommand + str;
this.sqlCommand = this.sqlCommand + ")";
this.cmd.CommandText = this.sqlCommand;
this.GenParameters();
this.cmd.ExecuteNonQuery();
return true;
}
catch (Exception exception)
{
Error.Record("数据插入出错", exception.ToString());
return false;
}
}
删除:
public int DataDelete()
{
try
{
this.sqlCommand = "delete from " + this.tableName;
if (this.conditionExpress != string.Empty)
{
this.sqlCommand = this.sqlCommand + " where " + this.conditionExpress;
}
this.cmd.CommandText = this.sqlCommand;
this.GenParameters();
return this.cmd.ExecuteNonQuery();
}
catch (Exception exception)
{
Error.Record("数据删除出错", exception.ToString());
return -1;
}
}
批量修改:
public int DataUpdate()
{
try
{
this.sqlCommand = "update " + this.tableName + " set ";
int count = this.alFieldItems.Count;
for (int i = 0; i < (count - 1); i++)
{
string sqlCommand = this.sqlCommand;
this.sqlCommand = sqlCommand + ((DBKeyItem) this.alFieldItems[i]).fieldName.ToString() + "=@" + ((DBKeyItem) this.alFieldItems[i]).fieldName.ToString() + ",";
}
this.sqlCommand = this.sqlCommand + ((DBKeyItem) this.alFieldItems[count - 1]).fieldName.ToString() + "=@" + ((DBKeyItem) this.alFieldItems[count - 1]).fieldName.ToString();
if (this.conditionExpress != string.Empty)
{
this.sqlCommand = this.sqlCommand + " where " + this.conditionExpress;
}
this.cmd.CommandText = this.sqlCommand;
this.GenParameters();
return this.cmd.ExecuteNonQuery();
}
catch (Exception exception)
{
Error.Record("数据更新出错", exception.ToString());
return -1;
}
}
public bool DataInsert()
{
try
{
this.sqlCommand = "insert into " + this.tableName + "(";
int count = this.alFieldItems.Count;
string str = string.Empty;
for (int i = 0; i < (count - 1); i++)
{
this.sqlCommand = this.sqlCommand + ((DBKeyItem) this.alFieldItems[i]).fieldName.ToString() + ",";
str = str + "@" + ((DBKeyItem) this.alFieldItems[i]).fieldName.ToString() + ",";
}
this.sqlCommand = this.sqlCommand + ((DBKeyItem) this.alFieldItems[count - 1]).fieldName.ToString();
str = str + "@" + ((DBKeyItem) this.alFieldItems[count - 1]).fieldName.ToString();
this.sqlCommand = this.sqlCommand + ") values(";
this.sqlCommand = this.sqlCommand + str;
this.sqlCommand = this.sqlCommand + ")";
this.cmd.CommandText = this.sqlCommand;
this.GenParameters();
this.cmd.ExecuteNonQuery();
return true;
}
catch (Exception exception)
{
Error.Record("数据插入出错", exception.ToString());
return false;
}
}
删除:
public int DataDelete()
{
try
{
this.sqlCommand = "delete from " + this.tableName;
if (this.conditionExpress != string.Empty)
{
this.sqlCommand = this.sqlCommand + " where " + this.conditionExpress;
}
this.cmd.CommandText = this.sqlCommand;
this.GenParameters();
return this.cmd.ExecuteNonQuery();
}
catch (Exception exception)
{
Error.Record("数据删除出错", exception.ToString());
return -1;
}
}
批量修改:
public int DataUpdate()
{
try
{
this.sqlCommand = "update " + this.tableName + " set ";
int count = this.alFieldItems.Count;
for (int i = 0; i < (count - 1); i++)
{
string sqlCommand = this.sqlCommand;
this.sqlCommand = sqlCommand + ((DBKeyItem) this.alFieldItems[i]).fieldName.ToString() + "=@" + ((DBKeyItem) this.alFieldItems[i]).fieldName.ToString() + ",";
}
this.sqlCommand = this.sqlCommand + ((DBKeyItem) this.alFieldItems[count - 1]).fieldName.ToString() + "=@" + ((DBKeyItem) this.alFieldItems[count - 1]).fieldName.ToString();
if (this.conditionExpress != string.Empty)
{
this.sqlCommand = this.sqlCommand + " where " + this.conditionExpress;
}
this.cmd.CommandText = this.sqlCommand;
this.GenParameters();
return this.cmd.ExecuteNonQuery();
}
catch (Exception exception)
{
Error.Record("数据更新出错", exception.ToString());
return -1;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只能用 循环了。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询