天天看点

ASP.NET操作Oracle数据库方法

ASP.NET连接oracle数据库

              首先我们在oracle数据库管理工具P/L SQL Developer中创建一个表,假设为销售表(WARE_RETAIL_PART),并添加几条记录,结果如下:

ASP.NET操作Oracle数据库方法

          接着,我们打开VS2010,然后在Web.config文件中找到<connectionStrings></connectionStrings>节点,在节点中添加如下一句话。

<connectionStrings>
     <add name="OracleConnString" connectionString="Data Source=ORCL;User ID=crm;Password=Oracle11" providerName="System.Data.OracleClient"/>
</connectionStrings>
           

其中,Data Source是oracle数据库的实例名,后面的分别是用户名和密码。

            然后我们在项目App_Code文件夹下新建一个类,命名为DB.cs,该类主要用于连接和操作oracle数据库。编写代码如下:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Data.OracleClient;
/// <summary>
/// DB 的摘要说明
/// </summary>
public class DB
{


    public DB()
    {
        //
        // TODO: 在此处添加构造函数逻辑
        //
    }

    #region 配置连接字符串
    /// 配置连接字符串
    /// </summary>
    /// <returns>返回SqlConnection对象</returns>
    public static OracleConnection GetCon()
    {

        return new OracleConnection(ConfigurationManager.ConnectionStrings["OracleConnString"].ToString());//配置连接字符串

    }

    #endregion


    #region 执行SQL语句(增删改操作)
    /// <summary>
    /// 执行SQL语句
    /// </summary>
    /// <param name="P_str_cmdtxt">用来执行的SQL语句</param>
    /// <returns>返回是否成功,成功返回True,否则返回False</returns>
    public static bool exSql(string P_str_cmdtxt)
    {
        OracleConnection con = DB.GetCon();//连接数据库
        con.Open();//打开连接
        OracleCommand cmd = new OracleCommand(P_str_cmdtxt, con);
        try
        {
            cmd.ExecuteNonQuery();//执行SQL 语句并返回受影响的行数
            return true;
        }
        catch (Exception e)
        {
            return false;
        }
        finally
        {
            con.Dispose();//释放连接对象资源
        }
    }
    #endregion

    #region  返回DataSet结果集
    /// <summary>
    /// 返回DataSet结果集
    /// </summary>
    /// <param name="P_Str_Condition">用来查询的SQL语句</param>
    /// <returns>结果集</returns>
    public static DataSet getDataSet(string P_str_cmdtxt)
    {
        OracleConnection con = DB.GetCon();//连接上数据库
        OracleDataAdapter da = new OracleDataAdapter(P_str_cmdtxt, con);
        DataSet ds = new DataSet();
        da.Fill(ds);
        return ds;//返回DataSet对象
    }
    #endregion

    #region 根据指定SQL语句select获取记录集合中的第一行数据
    /// <summary>
    /// 根据指定SQL语句select获取记录集合中的第一行数据
    /// </summary>
    /// <param name="sqlString">SQL语句</param>
    /// <returns>根据指定SQL语句select获取记录集合中的第一行数据</returns>
    public static DataRow GetDataRow(string sqlString)
    {
        DataSet ds = getDataSet(sqlString);
        ds.CaseSensitive = false;//表示DataTable对象中的字符串比较不区分大小写
        if (ds.Tables[0].Rows.Count > 0)
        {
            return ds.Tables[0].Rows[0];
        }
        else
        {
            return null;
        }
    }
    #endregion

    #region 查询数据是否存在的方法
    /// <summary>
    /// 查询数据是否存在的方法
    /// </summary>
    /// <param name="sql">需要执行的SQL语句</param>
    /// <returns>返回一个布尔值当数据存在返回True否则返回False</returns>
    public static bool isName(string sql)
    {
        //创建数据库连接
        OracleConnection con = GetCon();
        //打开数据库连接
        con.Open();
        //创建SqlCommand对象
        OracleCommand com = new OracleCommand(sql, con);
        //判断数据是否存在并返回相应的布尔值
        if (Convert.ToInt32(com.ExecuteScalar()) > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    #endregion

    #region 返回需要统计数据的结果(比如记录数)
    /// <summary>
    /// 返回需要统计数据的结果
    /// </summary>
    /// <param name="sql">需要查询的SQL语句</param>
    /// <returns>返回整型变量,表示统计后的结果</returns>
    public static int countData(string sql)
    {
        //创建数据库连接
        // string new_sql = CleanSQL(sql);
        OracleConnection con = GetCon();
        //打开数据库连接
        con.Open();
        //创建SqlCommand对象
        OracleCommand com = new OracleCommand(sql, con);
        //返回查询的结果
        return Convert.ToInt32(com.ExecuteScalar());

    }
    #endregion

    #region 用来执行用户登录操作,使用参数传递
    /// <summary>
    /// 该方法用来执行用户登录操作,使用参数传递。
    /// </summary>
    /// <param name="sql">需要执行的sql语句</param>
    /// <param name="name">用户登录名</param>
    /// <param name="pass">用户登录密码</param>
    /// <returns>返回一个布尔值,表示是否登录成功</returns>
    public static bool entrySql(string sql, string name, string pass, string type)
    {
        //创建数据库连接

        OracleConnection con = DB.GetCon();//连接数据库
        con.Open();//打开连接
        //创建SqlCommand对象
        OracleCommand com = new OracleCommand(sql, con);
        //设置参数的类型
        com.Parameters.Add(new SqlParameter("name", SqlDbType.VarChar, 50));
        //设置参数的值
        com.Parameters["name"].Value = name;
        //设置参数的类型
        com.Parameters.Add(new SqlParameter("pass", SqlDbType.VarChar, 50));
        //设置参数的值
        com.Parameters["pass"].Value = pass;
        com.Parameters.Add(new SqlParameter("type", SqlDbType.VarChar, 50));
        //设置参数的值
        com.Parameters["type"].Value = type;
        //判断是否登录成功并返回布尔值
        if (Convert.ToInt32(com.ExecuteScalar()) > 0)
        {
            con.Close();
            return true;


        }
        else
        {
            con.Close();
            return false;
        }
    }
    #endregion

    #region  绑定用户页面中的GridView控件
    /// <summary>
    /// 此方法实现数据绑定到GridView中
    /// </summary>
    /// <param name="dl">要绑定的控件</param>
    /// <param name="SqlCom">要执行的SQL语句</param>
    /// <returns></returns>
    public static bool BindGridView(GridView dl, string SqlCom)
    {
        dl.DataSource = DB.getDataSet(SqlCom);
        try
        {
            dl.DataBind();
            return true;
        }
        catch
        {
            return false;
        }
        finally
        {
            OracleConnection sqlcon = DB.GetCon();//连接数据库
            sqlcon.Close();
        }
    }
    #endregion
    public static bool BindDropDownList(DropDownList ddl, string SqlCom)
    {
        DataSet ds = DB.getDataSet(SqlCom);
        ddl.DataSource = ds.Tables[0].DefaultView;
        try
        {
            ddl.DataTextField = ds.Tables[0].Columns[0].ToString();      //显示的值  
            ddl.DataValueField = ds.Tables[0].Columns[0].ToString();       //后台的值
            ddl.DataBind(); //下拉框绑定
            //ddl.Items.Insert(0, new ListItem("请选择", "请选择"));//此举必须放到数据绑定之后

            return true;
        }
        catch
        {
            return false;
        }
        finally
        {
            OracleConnection sqlcon = DB.GetCon();//连接数据库
            sqlcon.Close();
        }
    }

    public static void JsExeC(Control up, string name, string js)
    {

        ScriptManager.RegisterClientScriptBlock(up, typeof(UpdatePanel), name, js, true);
    }

    public static string CleanSQL(string mString)
    {
        if (mString == null)
            mString = "";
        else
        {
            mString = mString.Replace("'", "''");
            mString = mString.Replace(";", "");
            mString = mString.Replace("--", "");
        }
        return mString;
    }



}
           

           在有了数据库操作类之后,我们可以在页面中访问我们的数据库了,这里我们测试下,在页面前端拖一个GridView,然后在后台查询销售表中的记录,并把记录绑定到GridView中。后台代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Data.OracleClient;
public partial class Oconnect : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string sql = "select * from WARE_RETAIL_PART";
        //string tab_name = "WARE_RETAIL_PART";
        DataSet ds = DB.getDataSet(sql);
        GridView1.DataSource = ds.Tables[0].DefaultView;
        GridView1.DataBind();
            
    }
}
           

          最后,我们点击运行VS,会在浏览器中看到我们销售表里的记录了,如果显示数据,说明连接oracle成功了!

ASP.NET操作Oracle数据库方法