C#操作Access数据库(查询,更新,插入)

1、公共方法:

/// <summary>
/// 操作Access数据库
/// </summary>
/// <param name="sql">SQL语句(查询、更新、插入、删除……)</param>
/// <param name="dataFilePath">Access文件路径</param>
/// <returns></returns>
static public int updateAccessTable(string sql, string dataFilePath)
{
    OleDbConnection connct = new OleDbConnection();
    string oleDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dataFilePath;
    connct.ConnectionString = oleDB;
    OleDbCommand myCommand = new OleDbCommand(sql, connct);
    try
    {
        connct.Open();
        int res = myCommand.ExecuteNonQuery();
        connct.Close();
        return res;
    }
    finally
    {
        connct.Dispose();
        myCommand.Dispose();
     }
}

2、批量更新的Sql语句(使用B表数据批量更新A表数据)

string mdbpath=@'D:/test.mdb';
string sql="update A表 a inner join B表 b on a.ID=b.ID set a.name=b.name,a.age=b.age,a.sex='男'";
updateAccessTable(sql,mdbpath);

3、批量插入的Sql语句1(将一个数据库中的B表数据批量插入另一个数据库中的A表)

string mdbpath=@'D:/test.mdb';
string Output_path=@'D:/test2.mdb';
string sql="insert into A表(name,age) Select name,age from [;database=" + Output_path + "].B表";
updateAccessTable(sql,mdbpath);

4、批量插入的Sql语句2(将B表数据和C表数据批量插入A表)

string mdbpath=@'D:/test.mdb';
string sql="insert into A表(name,salary) Select name,salary from (Select b.name,c.salary from B表 b,C表 c where b.ID=c.ID)";//等价inner join
updateAccessTable(sql,mdbpath);

//注意事项:表b和表C要求是一对一,一对多、多对一或者多对多都会造成查询结果重复。
//inner join:仅显示匹配数据
//left join:左表全部显示
//right join:右表全部显示
//outer join:左右表全部显示

补充:SQL的几种连接:https://www.cnblogs.com/zxlovenet/p/4005256.html

5、批量插入的Sql语句3(插入指定值)

string mdbpath=@'D:/test.mdb';
string sql="insert into A表(name,salary) values('Lucy','1200$')";//单条数据插入
updateAccessTable(sql,mdbpath);

//全表插入可以省略列名
string sql="insert into A表 values('Lucy','1200$','女','25')";

//全表批量插入
string sql="insert into A表 values('Lucy','1200$','女','25'),('Mary','1300$','女','23')";

6、生成临时表并删除

string mdbpath=@'D:/test.mdb';
string Output_path=@'D:/test2.mdb';
string sql="select name,age,sex into 临时表 from A表";//生成临时表
updateAccessTable(sql,mdbpath);

//删除临时表
string sql="drop table 临时表";

7、删除表中的某一行或者某一列

string mdbpath=@'D:/test.mdb';
string Output_path=@'D:/test2.mdb';
string sql="delete from A表 where ID=1";//删除某一行
updateAccessTable(sql,mdbpath);

//删除某一列
string sql="alter table A表 drop column sex";

//删除多列
string sql="alter table A表 drop column sex,age,salary";

8、添加各种类型的字段

string mdbpath=@'D:/test.mdb';
string Output_path=@'D:/test2.mdb';
string sql="alter table A表 add Length double default 0";//增加数字字段,双精度型,缺省值为0
updateAccessTable(sql,mdbpath);

//补充增加字段: 

string sql="alter table [表名] add 字段名 smallint default 0";// 增加数字字段,整型,缺省值为0。

string sql="alter table [表名] add 字段名 int default 0 ";//增加数字字段,长整型,缺省值为0。

string sql="alter table [表名] add 字段名 single default 0 ";//增加数字字段,单精度型,缺省值为0。

string sql="alter table [表名] add 字段名 double default 0 ";//增加数字字段,双精度型,缺省值为0。

string sql="alter table [表名] add 字段名 Tinyint default 0 ";//增加数字字段,字节型,缺省值为0。

string sql="alter table [表名] add 字段名 text [null] ";//增加备注型字段,[null]可选参数。

string sql="alter table [表名] add 字段名 memo [null] ";//增加备注型字段,[null]可选参数。

string sql="alter table [表名] add 字段名 varchar(N) [null] ";//增加变长文本型字段大小为N(1~255)。

string sql="alter table [表名] add 字段名 char [null] ";//增加定长文本型字段大小固定为255。

 

  • 8
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值