首先我们在oracle数据库管理工具P/L SQL Developer中创建一个表,假设为销售表(WARE_RETAIL_PART),并添加几条记录,结果如下:
接着,我们打开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成功了!