接手的项目很多,其中和Oracle打交道的最多,其实不管是和Oracle打交道,还是其他数据库打交道,最麻烦的是在程序中要写很多SQL。
Seasar技术(类似于Spring技术,不过鄙人没用Spring技术开发过项目)一旦使用,就有点爱不释手了,因为它不需要再写那么多SQL,更不需要在程序中拼接那么多的SQL语句。它访问DB的操作是:
对于简单的操作(如插入数据,仅根据关键字获取一条数据,删除数据,更新数据),你根本不用写任何SQL,只要在定义好的JavaBean中(对,Seasar主要应用于Java,不过好像.Net也有应用) 定义一下使用到的Table,以及对应于每个字段的映射,seasar就会在执行的时候自动产生SQL;对于复杂的查询操作,可以定义SQL文件,只要把SQL文件的文件名和方法名对应好,seasar框架就可以自动的处理,做到SQL和程序的完全分离。
其实,仔细分析的话,发现seasar的思路并不复杂,但却让我们在开发的时候效率更高了。
这种做法可以在.net中很好的实现。
1)简单的操作(如插入数据,仅根据关键字获取一条数据,删除数据,更新数据),定义Dataset对象,可以自动产生标准的语句(只要在开发环境中从数据库中把库表拖到设计画面中)
2)复杂的操作,通过存储过程查询。
就这么简单。
-----------------------------------------------------------------------------------------------
C#调用存储过程的例子:
1)Winform
OracleHelper db = new OracleHelper();
ParameterCollection paramCol = new ParameterCollection();
paramCol.NewCursor("patientlist");
paramCol.NewInput("patientName", DbType.AnsiString,"huax");
DataSet ds = db.QueryStored("query_p01_01", paramCol);
this.dataGridView1.DataSource = ds.Tables[0];
2)OracleHelper
/*****
* OracleHelper
*
* 2008.3.19
* This class provide the method to query by stored procedure.
*
* ***/
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Oracle.DataAccess.Client;
namespace vip.da
{
public class OracleHelper
{
private OracleConnection _con = null;
/// <summary>
/// auto open connection in create
/// </summary>
public OracleHelper()
{
string conStr = ConfigUtil.getOracleConnectionString();
this._con = new OracleConnection(conStr);