1. 程式人生 > >asp.net三層架構連線Oracle 11g詳解

asp.net三層架構連線Oracle 11g詳解

asp.net三層架構連線Oracle 11g

連線Oracle時使用微軟的Oracle連線元件;

一 DAL層

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Data;
using System.Data.OracleClient;

namespace SystemDAL
{
    public class DAL
    {
        //連線字串
        public static string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["db"].ToString();

        public DAL()
        {
            //connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["db"].ToString();
        }

        /// <summary>
        /// 執行單條語句
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static int ExecuteNonQuery(string sql)
        {
            int x = 0;
            try
            {
                // Open a connection to the DB.
                OracleConnection connOra = new OracleConnection(connectionString);
                connOra.Open();
                OracleTransaction tran = connOra.BeginTransaction();
                // Create a command to execute the sql statement.

                OracleCommand cmdOra = connOra.CreateCommand();
                cmdOra.CommandText = sql;

                x = cmdOra.ExecuteNonQuery();

                tran.Commit();

                connOra.Close();
                connOra.Dispose();
                cmdOra.Dispose();
            }
            catch (Exception ex)
            {
                //log.Error(ex.StackTrace);
            }
            return x;

        }

        public static DataTable ExecuteDataTable(String cmdText)
        {
            DataTable dt = new DataTable();
            //DbProviderFactory factory = DbProviderFactories.GetFactory(providerName);

            try
            {
                // Open a connection to the DB.
                //DbConnection connOra = factory.CreateConnection();
                OracleConnection connOra = new OracleConnection(connectionString);
                //connOra.ConnectionString = connectionString;
                connOra.Open();

                // Create a command to execute the sql statement.
                //DbCommand cmd = factory.CreateCommand();

                OracleCommand cmd = connOra.CreateCommand();
                cmd.CommandText = cmdText;

                OracleDataAdapter ada = new OracleDataAdapter();
                //DbDataAdapter ada = factory.CreateDataAdapter();// new OracleDataAdapter(cmd1);                
                ada.SelectCommand = cmd;
                ada.Fill(dt);

                connOra.Close();
                connOra.Dispose();
                cmd.Dispose();
            }
            catch (Exception ex)
            {
                string str = ex.Message;
            }
            return dt;

        }

    }
}

類DAL;


執行單條語句ExecuteNonQuery:
傳入sql語句,返回值int;
開啟Oracle連線,構造Oracle命令物件,設定命令物件的命令文字等於傳入的sql;
執行sql,返回執行的int型結果;


獲取資料表ExecuteDataTable:
傳入sql語句,返回資料表;
開啟Oracle連線;
構造Oracle命令物件,設定命令物件的命令文字等於傳入的sql;
new一個Oracle介面卡物件,設定介面卡物件的SelectCommand等於命令物件;
呼叫介面卡物件的Fill方法填充資料表物件,返回資料表物件;

二 BLL層

using System;
using System.Collections.Generic;
using System.Text;
using SystemModel;
using SystemDAL;
using System.Data;

namespace SystemBLL
{
    public class BLL
    {
        public BLL()
        {

        }
        /// <summary>
        /// 插入方法
        /// </summary>
        /// <param name="M"></param>
        /// <returns></returns>
        public static int InsertData(LoginModel M)
        {
            string sql = "INSERT INTO Login VALUES(@LoginName,@LoginPassword)";
            try
            {
                DAL dal = new DAL();
                return DAL.ExecuteNonQuery(sql);
            }
            catch (Exception E)
            {
                throw E;
            }
        }

        /// <summary>
        /// 修改方法
        /// </summary>
        /// <param name="M"></param>
        /// <returns></returns>
        public static int UpdateTData(LoginModel M)
        {
            string sql = "UPDATE Login SET 
[email protected]
,[email protected] WHERE [email protected]"; try { DAL dal = new DAL(); return DAL.ExecuteNonQuery(sql); } catch (Exception E) { throw E; } } /// <summary> /// 刪除方法 /// </summary> /// <param name="M"></param> /// <returns></returns> public static int DeleteData(LoginModel M) { string sql = "DELETE FROM Login WHERE
[email protected]
"; try { DAL dal = new DAL(); return DAL.ExecuteNonQuery(sql); } catch (Exception E) { throw E; } } /// <summary> /// 登入方法 /// </summary> /// <param name="M"></param> /// <returns></returns> public static DataTable Login(string LoginName, string LoginPassword) { string sql = "SELECT * FROM Logins WHERE [email protected] AND [email protected]"; try { DAL dal = new DAL(); return DAL.ExecuteDataTable(sql); } catch (Exception E) { throw E; } } /// <summary> /// 查詢所有使用者 /// </summary> /// <param name="M"></param> /// <returns></returns> public static DataTable GetUser(LoginModel M) { try { string sql = "SELECT * FROM Login"; DAL dal = new DAL(); return DAL.ExecuteDataTable(sql); } catch (Exception E) { throw E; } } /// <summary> /// 查詢單個使用者 /// </summary> /// <param name="M"></param> /// <returns></returns> public static DataTable GetUserID(LoginModel M) { try { string sql = "SELECT * FROM Login WHERE [email protected]"; DAL dal = new DAL(); return DAL.ExecuteDataTable(sql); } catch (Exception E) { throw E; } } } }

引用SystemModel,SystemDAL;
類BLL;


插入資料InsertData:
傳入LoginModel物件M,返回int;
呼叫DAL.ExecuteNonQuery在Login表中插入值;


修改資料UpdateTData:
傳入LoginModel物件M,返回int;
呼叫DAL.ExecuteNonQuery更新Login表;


刪除資料DeleteData:
傳入LoginModel物件M,返回int;
呼叫DAL.ExecuteNonQuery從Login表刪除資料;


登入方法Login:
呼叫DAL.ExecuteNonQuery從Login表返回匹配的記錄;
返回型別為DataTable;


查詢所有使用者,返回DataTable;
查詢單個使用者,根據ID返回DataTable;

三 實體層

using System;
using System.Collections.Generic;
using System.Text;

namespace SystemModel
{
    public class LoginModel
    {
        public LoginModel()
        {

        }
        private int _ID;

        public int ID
        {
            get { return _ID; }
            set { _ID = value; }
        }
        private string _LoginName;

        public string LoginName
        {
            get { return _LoginName; }
            set { _LoginName = value; }
        }
        private string _LoginPassword;

        public string LoginPassword
        {
            get { return _LoginPassword; }
            set { _LoginPassword = value; }
        }
    }
}

四 前端

login.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>登入介面|- 51aspx.com</title>
</head>
<body style="text-align: center">
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <asp:Panel ID="Panel1" runat="server" Height="13px" Width="359px" style="font-weight: bold; font-size: small">
            <table style="width: 372px">
                <tr>
                    <td style="width: 81px">
                        <asp:Label ID="Label1" runat="server" Text="使用者名稱"></asp:Label></td>
                    <td style="width: 146px">
                        <asp:TextBox ID="TextBox1" runat="server" Height="18px"></asp:TextBox></td>
                    <td style="width: 116px">
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1"
                            ErrorMessage="使用者名稱不能為空" ForeColor="DarkGray" Width="126px"></asp:RequiredFieldValidator></td>
                </tr>
                <tr>
                    <td style="width: 81px; height: 28px;">
                        <asp:Label ID="Label2" runat="server" Text="密    碼"></asp:Label></td>
                    <td style="width: 146px; height: 28px;">
                        <asp:TextBox ID="TextBox2" runat="server" TextMode="Password" Width="149px"></asp:TextBox></td>
                    <td style="width: 116px; height: 28px;">
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TextBox2"
                            ErrorMessage="密碼不能為空" ForeColor="DarkGray"></asp:RequiredFieldValidator></td>
                </tr>
                <tr>
                    <td style="width: 81px">
                    </td>
                    <td style="width: 146px">
                        <asp:LinkButton ID="LinkButton1" runat="server" Font-Underline="False" ForeColor="Black"
                            OnClick="LinkButton1_Click">登 錄</asp:LinkButton>
                                     
                        <asp:LinkButton ID="LinkButton2" runat="server" Font-Underline="False" ForeColor="Black"
                            OnClick="LinkButton2_Click">重  置</asp:LinkButton></td>
                    <td style="width: 116px">
                    </td>
                </tr>
            </table>
        </asp:Panel>
    </form>
</body>
</html>

login.aspx.cs
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 SystemModel;
using SystemBLL;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        DataTable table1 = BLL.Login(this.TextBox1.Text, this.TextBox2.Text);
        if (table1.Rows.Count > 0)
        {
            Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('登入成功!');</script>");
            Response.Redirect("test.aspx");
        }
        else
        {
            Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('登入失敗!');</script>");
        }
    }
    protected void LinkButton2_Click(object sender, EventArgs e)
    {
        this.TextBox1.Text = null;
        this.TextBox2.Text = null;
    }
}

五 web.config

<span style="white-space:pre">	</span><connectionStrings>
		<add name="db" connectionString="Data Source=ORCL;User Id=scott;Password=123dd654ca"/>
	</connectionStrings>


相關推薦

asp.net架構連線Oracle 11g

asp.net三層架構連線Oracle 11g 連線Oracle時使用微軟的Oracle連線元件; 一 DAL層 using System; using System.Collections.Generic; using System.Text; using System

VS2010構建ASP.NET架構例項演示(一)

開發環境:vs2010+SQLSERVER2008 功能:簡單實現顯示一張表的記錄。 具體步驟:       1、開啟sql server2008,在裡面建立資料庫名為halfcool,然後在資料庫建立users表,裡面有三個欄位id(自動增加),username(

VS2010構建ASP.NET架構例項演示(

8、業務層(Bll),針對具體問題的操作,也可以說是對資料層的操作,對資料業務邏輯處理。 建立的方法同上。名稱為Bll;解決方案:新增到解決方案;路徑為e:\test\Solution1;然後將Bll目錄下面的class1.cs改名為UserBll.cs了。這層要引用Da

asp.net架構

一、資料庫 /*==============================================================*/ /* DBMS name:      Microsoft SQL Server 2000         

ASP.NET 架構技術 人力資源管理系統專案HR (深入WebServic

白菜價, 想要的聯絡QQ:867635458,非誠勿擾! ASP.NET MVC Linq 技術  企業級通用OA系統  全程開發  大型企業級別OA專案實戰全新上線啦!本專案由小孔子講師全程錄製。小孔子老師大家都很熟悉了,他所錄製的其他課程都受到了學員的一致好

ASP.NET開發】.NET架構簡單解析

這篇文章本來應該很早就寫出來的,但是一直苦於自己的精神能力有限,而且已經到了我們學校的考試周,所以時間上還是有點緊迫。關鍵的一點就是,找不到合理的思路來寫,思路沒有的話,就算是再好的素材,也寫不來大家喜歡的文章。 之前已經寫過關於.NET三層架的兩篇文章了,一篇是《【ASP

.net架構開發步驟

City城市表,id ,name,password,address,phone; 1.新建一個windows窗體應用程式,CitySys 2.檔案–》新增–》新建專案–》類庫(CitySysModel)–》重新命名class1.cs的類(CityModel)。 3.根據資料表裡面的欄位,

.NET架構

零基礎學C#3.0 -- .net的三層架構 - CodingPenguin 時間 2014-01-26 17:40:00 部落格園-所有隨筆區 原文  http://www.cnblogs.com/codingpenguin/p/3534304.html 主題 .N

.NET 架構

Connection : 用於連線資料庫命令. Command : 執行鍼對資料庫的SQL命令. ExecuteScalar() : 返回第一行第一列的值(object型別). ExecuteNonQuery() : 返回執行命令後受到影響的行數(int型別). ExecuteReade

.net架構(3-tier application)

      做一般網站用三層架構似乎麻煩些,要考慮基層呢,用自動生成程式碼工具的話可以考慮使用。下面引用別人的對三層架構解釋。       三層架構(3-tier application) 通常意義上的三層架構就是將整個業務應用劃分為:表現層(UI)、業務邏輯層(BLL)、資

.net 架構的認識

     所謂三層架構,是在客戶端與資料庫之間加入了一個“中間層”,也叫元件層。 這裡所說的三層體系,不是指物理上的三層,不是簡單地放置三臺機器就是三層體系結構, 也不僅僅有B/S應用才是三層體系結構,三層是指邏輯上的三層,即使這三個層放置到一臺機器上。     在專案

ASP.Net MVC中使用Chart 控制元件

在 .NET 3.5 的時候,微軟就提供了一個 Chart 控制元件,網路上有大量的關於在 VS2008 中使用這個控制元件的文章,在 VS2010 中,這個控制元件已經被整合到 ASP.NET 4.0 中,可以從工具箱中直接使用了。 這個控制元件在 ASP.NET 經典的頁面中很容易使用,但是在

VC使用ADO連線Oracle資料庫(含原始碼下載)

ADO 主要物件介紹     ADO物件包括:連線物件(Connection Object)、命令物件 (Command Object) 、記錄集對象(RecordSet  Object)、欄位物件(Field  Object) 、記錄物件(Record  Object)

ASP.Net 2.0窗體身份驗證機制(FormsAuthentication) (轉載)

ASP.Net 2.0窗體身份驗證機制詳解(FormsAuthentication) 收藏  轉自:http://www.aspxclub.com/l12/c_3689.html 本篇文章介紹了在ASP.Net 2.0如何做窗體身份驗證,並且講解了IIS和ASP.Net2.0窗體身份驗證機制是如何結合在一

ASP.net DropDownList資料繫結及使用

1.       dropdownlist 繫結資料 1.1  固定繫結(適合已經固定的資料繫結到dropdownlist) 例項: <asp:DropDownList runat="server"ID="ddlArea" Width="120px" > &l

DevExpress ASP.NET Bootstrap Controls v18.2新功能(一)

訪問 文件管理 dropbox .net ots 二次 pen 工具 web 行業領先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式發布,本站將以連載的形式為大家介紹新版本新功能。本文將介紹了DevExpres

ASP.NET頁面跳轉的三大方法

頁面 詳解 不支持 客戶 rec 一個 .exe 決定 用戶 ASP.NET頁面跳轉有什麽方法呢?,現在給大家介紹三種方法,他們的區別是什麽呢?讓我們開始吧: ASP.NET頁面跳轉1、response.redirect 這個跳轉頁面的方法跳轉的速度不快,因為它要走2個來回

asp.net mvc 加架構 完美搭配

第二章 幫助 summary 本地數據庫 asp 存在 remoting new org http://www.hysql.org/aspnet/20180630/5712.html 先來一張項目的層級結構圖: Model:模型層,主要是各種類型、枚舉以及ORM框

Asp.Net MVC+EF+架構 簡單搭建 (1) Asp.Net MVC+EF+架構

首先,謝謝各位過客觀看,今天我們說下簡單的 Asp.Net MVC+EF+三層架構 搭建( 第一部分)。 很簡單,先看下完成之後程式碼圖:   這裡講的是一個整體框架的搭建,所以頁面暫時Pass,先以一個小的查詢為例。   一、新建Model、Dal、Bl

Asp.net mvc+架構(註冊篇)

                                            &