• 编写OracleMembershipProvider,让SharePoint2007使用Oralce中的用户数据实现Form验证。 (第三天)


    最近好忙呀,一直没有完整的时间来安静的编写OracleMembershipProvider,周末领导都去开会了,终于可以偷点时间出来写这个东东了,因为MembershipProvider接口众多,实现起来代码量大,所以下面列出的代码仅仅是截止发帖时部分完成的代码,后续几天还会继续编写,以下代码并未测试,打算所有实现写完后再测试,为了方便大家读代码,我尽量多多添加注释,自定义函数的注释是自己编写的,MembershipProvider的成员注释全部来源于MSDN。

    项目里有两个类,OracleMembershipProvider是继承并实现抽象类MembershipProvider并扩充了一些辅助成员,OracleTools是自己定义的一些与Oracle交互的基础成员。

    OracleMembershipProvider

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

    namespace BoooLee
    {
        
    class OracleTools
        
    {
            
    /// <summary>
            
    /// 私有变量
            
    /// </summary>

            private string _ConnectionString = "";  //数据库连接串


            
    /// <summary>
            
    /// 数据库连接串
            
    /// </summary>

            public string ConnectionString
            
    {
                
    get
                
    {
                    
    return _ConnectionString;
                }


                
    set
                
    {
                    _ConnectionString
    =value;
                }

            }


            
    /// <summary>
            
    /// 运行无返回值的Sql语句。
            
    /// </summary>
            
    /// <param name="SqlString">指定要运行的Sql语句。</param>
            
    /// <param name="Conn">指定数据库连接。</param>
            
    /// <returns>成功返回true,失败返回false。</returns>

            public bool RunSqlNonQuery(string SqlString)
            
    {
                OleDbConnection Conn
    =null;

                
    try
                
    {
                    
    using (OleDbCommand Command = new OleDbCommand())
                    
    {
                        Command.CommandText 
    = SqlString;
                        Conn 
    = GetConnection();
                        Conn.Open();
                        Command.Connection 
    = Conn;                    
                        Command.ExecuteNonQuery();
                    }

                    
    return true;
                }

                
    catch (Exception)
                
    {
                    
    return false;
                }

                
    finally 
                
    {
                    
    //关闭数据库连接
                    if (Conn != null && Conn.State==ConnectionState.Open)
                        Conn.Close();
                }

            }


            
    /// <summary>
            
    /// 运行返回一个值的Select语句。
            
    /// </summary>
            
    /// <param name="SqlString">指定要运行的Sql语句。</param>
            
    /// <param name="Conn">指定数据库连接。</param>
            
    /// <returns>成功返回Select语句结果,失败返回空字符串。</returns>

            public string RunSqlScalar(string SqlString)
            
    {
                OleDbConnection Conn 
    = null;

                
    try
                
    {
                    Conn 
    = GetConnection();
                    Conn.Open();

                    
    using (OleDbCommand Command = new OleDbCommand())
                    
    {
                        Command.CommandText 
    = SqlString;
                        Command.Connection 
    = Conn;
                        
    return Command.ExecuteScalar().ToString();
                    }

                }

                
    catch (Exception)
                
    {
                    
    return "";
                }

                
    finally
                
    {
                    
    if (Conn != null && Conn.State == ConnectionState.Open)
                        Conn.Close();
                }

            }


            
    /// <summary>
            
    /// 运行返回DataTable的Sql语句。
            
    /// </summary>
            
    /// <param name="SqlString">指定要运行的Sql语句。</param>
            
    /// <param name="Conn">指定数据库连接。</param>
            
    /// <returns>成功返回Select语句结果DataTable。</returns>

            public DataTable RunSqlDataTable(string SqlString)
            
    {
                OleDbConnection Conn 
    = null;

                
    try
                
    {
                    
    using (OleDbDataAdapter DataAdapter = new OleDbDataAdapter())
                    
    {
                        Conn 
    = GetConnection();
                        Conn.Open();
                        OleDbCommand SC 
    = new OleDbCommand();
                        SC.CommandText 
    = SqlString;
                        SC.Connection 
    = Conn;
                        DataAdapter.SelectCommand 
    = SC;
                        DataTable dt 
    = new DataTable();
                        DataAdapter.Fill(dt);
                        
    return dt;
                    }

                }

                
    catch (Exception)
                
    {
                    
    return new DataTable();
                }

                
    finally
                
    {
                    
    if (Conn != null && Conn.State == ConnectionState.Open)
                        Conn.Close();
                }

            }


            
    /// <summary>
            
    /// 返回一个OleDbConnection对象。
            
    /// </summary>
            
    /// <returns>成功返回的OleDbConnection对象,失败返回null。</returns>

            public OleDbConnection GetConnection()
            
    {
                
    try
                
    {
                    OleDbConnection result 
    = new OleDbConnection();
                    result.ConnectionString 
    = _ConnectionString;
                    
    return result;
                }

                
    catch (Exception)
                
    {
                    
    return null;
                }

            }

        }

    }


    废话时间:
    昨天跟伙计去了一个傣家菜馆,虽然经常去,但昨天有些特别,特别到哪里呢,俺终于鼓足勇气点了一盘竹虫,

    看着蛮XX的,把在座的其他几个伙计看的好难受,俺也有点怕了,吃还是不吃呢???我让服务员先吃一个给我看,没想到女服务还真大方,抓起一个就吃,好象很享受的样子,俺心想,人家女子都吃列,大老爷们还怕啥,吃!!!


    哈哈,还真香,有点蚕蛹的味道,都是高蛋白嘛,这么一小碟不便宜呢,除了给老婆硬吃了一条,其他全被我吃光了,边喝小酒边吃虫子,乐哉!乐哉!
  • 相关阅读:
    .net 5.0
    多线程synchronized锁
    多线程(Thread、线程创建、线程池)
    电商秒杀方法
    sb @EnableAsync与@Async 20210310
    spring boot @EnableAsync 异步调用
    五代十国军事人物
    唐朝末年,七大割据军阀势力
    盘点万历之后,镇守辽东的8位军事统帅,堪称有军事作为的仅三人
    Cookie-Session or JWT
  • 原文地址:https://www.cnblogs.com/booolee/p/631420.html
Copyright © 2020-2023  润新知