zoukankan      html  css  js  c++  java
  • [导入]Access里使用存储过程及用户自己定义的控件里使用参数

    1、Access里使用存储过程。

      这可能是一个很有意思的内容,我所以这样做,是因为明确的知道自己做的项目会以SQLServer上实现,而在测试及开发的时候,还只能用Access,这或许是一个矛盾,但我还是把数据层与逻辑尽可能的分开了,也实现了数据可以快速转化的一些方法。但我还是想用SQLserver的存储过程,于是在Access里做了这样的方法来代替。

    先在Access的查询里建立一个查询,因为我们可以使用任何的SQL语句在这个查询里,所以也就可以使用一些数据库操作命令了,然后保存。在ASP.net里这样来引用它:

    //t_video_SumVideos:  "select count(v_id),sum(v_size) from t_video where v_clientID=?";
    if(OpenConn())
       {
        m_command     = new OleDbCommand();

        m_command.CommandType  = CommandType.StoredProcedure;
     m_command.CommandText  = "t_video_SumVideos";
        m_command.Parameters.Add("@int_clientID",m_clientID);
        OleDbDataReader m_reader;
        m_reader    = m_command.ExecuteReader();
        if(m_reader.Read())
        {
         m_ExistsVideos  = m_reader.GetInt32(0);
         m_ExistsSize  = m_reader.GetInt64(1);
        }
        m_reader.Close();
       }

    因为参数名只能用?(书上这样说的,没有试过其它的变量名)所以,我们必须自己小心的修理变量的传递顺序。对于数值与字符串,使用的时候都没有问题,日期时间变量得用一个ToString()来转化一下,不过还好,都能使用。
     m_command.Parameters.Add("@int_clientID",m_clientID);
    这里的“@int_clientID”没有什么用,自己定义的,但为了方便的转到SQLServer上,还我是准备了一下。

    2、在自己定义的控件里使用参数:

    有这样的一个例子:HeaderTitle.ascx
    <script runat= “server“>
    public PageTitle as stirng =”Title”
    </Script>
    <title><%=PageTitle%></title>

    这一个简化的控件,里面用了一个参数(VB.net语法,我没有试过)。而且在自己引用空上控件的时候:
    <%@Register TagePerfix=“Company“ TagName=“Header“ Src=“HeaderTitle.ascx“%>
    <Company:Header
    ID=“someID“
    PageTitle=“NewTitle“ runat=“server“>

    我在第一次看这个例子的时候觉得很有意思,不仅可以像ASP那样使用包含文件,而且还可以使用参数。然而问题是:它没有使用CodeBehind技术,而且这本质上也没有把代码也逻辑分开,里面还是与HTML混用,而更多的是,如果我有很多的参数想要从数据库里取得,而且给控件加一些自己的事件,都将变得很麻烦(在没有使用CodeBehind技术的时候)。

    于是我这样想办法:

    //自己的控件:
    namespace WAVE
    {
     using System;
     using System.Data;
     using System.Drawing;
     using System.Web;
     using System.Web.UI.WebControls;
     using System.Web.UI.HtmlControls;
     using Webb.WAVE.Controls;
     using Microsoft.Web.UI.WebControls;

     /// <summary>
     ///  Summary description for inc_ClientDetialInfo.
     /// </summary>
     public class inc_ClientDetialInfo : System.Web.UI.UserControl
     {  
      private void Page_Load(object sender, System.EventArgs e)
      {
       // Put user code to initialize the page here
      }

      public void LoadClientData(int m_clientID)
      {
    //从数据库取得数据
       m_client  = new ClientAccount();
       m_client.LoadClientData(m_clientID);
       Label1.Text  = m_client.m_address;
      }
    }

    而在引用它的地方这样加载它,这样一来不仅解决了大量数据做为参数的问题,还可以让控件独立动作(上面省略了)。
    //这一个在DataGrid里选择了某一个数据后,通过ID在到数据库里查询更详细的内容,然后动态的加载到页面的一个Panel上.
      private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
      {

       int m_clientID     = Convert.ToInt32(DataGrid1.DataKeys[DataGrid1.SelectedIndex]);//取得ID
       c_clientDetailPanel.Visible  = true;//显示Panel
       c_dynamicDetialPanel.Visible = true;//
       m_cilentDetia     = (inc_ClientDetialInfo)this.LoadControl("inc_ClientDetialInfo.ascx");//动态加载控件m_clientData在前面已经申明,inc_ClientDetialInfo是自己定义的一个控件类名.
       m_cilentDetia.LoadClientData(m_clientID);//调用自己控件的方法,让它自己从数据库里加载信息
       c_dynamicDetialPanel.Controls.Add(m_cilentDetia);//在页面上显示自己加载的详细信息
      }

    OK,这样一来解决了我的很多麻烦的问题,方便快捷的使用方法。


    文章来源:http://computer.mblogger.cn/wucountry/posts/47849.aspx
    ================================
      /\_/\                        
     (=^o^=)  Wu.Country@侠缘      
     (~)@(~)  一辈子,用心做一件事!
    --------------------------------
      学而不思则罔,思而不学则怠!  
    ================================
  • 相关阅读:
    Oracle(二)常用操作语句
    Oracle(一)概念理解
    Spring MVC实现文件上传和下载
    Spring MVC 的执行流程
    Spring MVC原理及配置详解
    idea创建maven web项目
    Spring Bean的生命周期
    integer和int的区别
    web项目搜索框智能提示
    html-tab page
  • 原文地址:https://www.cnblogs.com/WuCountry/p/305683.html
Copyright © 2011-2022 走看看