一直很钟情于使用ACCESS在项目开发期间做测试或做小型项目,方便快捷易布置,但很多兄弟认为ACCESS没有存储过程,其实它是有的。。。。只不过叫做查询设计,且不能执行多语句。下面来看一下具体的使用。
一、Access里的存储过程:
在Access里面,有一个东西,叫做查询设计。其实它就是存储过程。首先我们看一下创建方法:
1.1 打开ACCESS,新建一个数据库(access 2000-2003格式兼可)与一张或多张表,随便弄一个咯。如图1.1所示。
图1.1 建立的ACCESS数据表
二、建立存储过程
在ACCESS2007里,点击“创建”-->“查询设计”,如图2.1所示:
图2.1 查询设计
出现的选择表不用理会,直接关闭。然后切换视图到SQL视图,如图2.2所示:
图2.2 进入SQL视图
下面的大家都知道了吧,进入正题,写过程,如图2.3所示。不过ACCESS不支持多语句,很遗憾。
图2.3 编写SQL
当然,编写完后记得保存,这儿存为UP_Insert_Member。
三、在代码中进行调用
在这儿直接使用微软的企业库了,调用代码如下:
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetStoredProcCommand("UP_Insert_Member");
db.AddInParameter(cmd, "MopID", DbType.String, this.tbMopID.Text);
db.AddInParameter(cmd, "IsJoinGroup", DbType.Boolean, this.chkIsJoinGroup.Checked);
db.AddInParameter(cmd, "GroupNumber", DbType.Int32, this.ddlGroupNumber.SelectedValue);
db.AddInParameter(cmd, "SendMoper", DbType.String, this.txtSendMoper.Text);
this.Label1.Text = string.Format("添加了{0}条数据", db.ExecuteNonQuery(cmd));
DbCommand cmd = db.GetStoredProcCommand("UP_Insert_Member");
db.AddInParameter(cmd, "MopID", DbType.String, this.tbMopID.Text);
db.AddInParameter(cmd, "IsJoinGroup", DbType.Boolean, this.chkIsJoinGroup.Checked);
db.AddInParameter(cmd, "GroupNumber", DbType.Int32, this.ddlGroupNumber.SelectedValue);
db.AddInParameter(cmd, "SendMoper", DbType.String, this.txtSendMoper.Text);
this.Label1.Text = string.Format("添加了{0}条数据", db.ExecuteNonQuery(cmd));
四、使用事务
Database db = DatabaseFactory.CreateDatabase();
using (DbConnection conn = db.CreateConnection())
{
DbTransaction tran = conn.BeginTransaction();
DbCommand cmd = db.GetSqlStringCommand("delete from Member");
this.Label1.Text = string.Format("删除了{0}条数据", db.ExecuteNonQuery(cmd, tran));
tran.Rollback();
BindData();
}
using (DbConnection conn = db.CreateConnection())
{
DbTransaction tran = conn.BeginTransaction();
DbCommand cmd = db.GetSqlStringCommand("delete from Member");
this.Label1.Text = string.Format("删除了{0}条数据", db.ExecuteNonQuery(cmd, tran));
tran.Rollback();
BindData();
}