[导入]Access里使用存储过程及用户自己定义的控件里使用参数
2005-10-13 23:16
447 查看
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
这可能是一个很有意思的内容,我所以这样做,是因为明确的知道自己做的项目会以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
相关文章推荐
- [导入]使用panelholder加载用户控件定义属性
- 以前一直用的别人的分页控件今天自己写了个方便自己(更新)使用正则表达式处理URL参数
- [导入]关于Access里使用存储过程!
- duilib中加入自己定义控件之后怎么可以在xml文件里配置使用
- phpmyadmin无法导入大些文件 及使用配置文件中定义的控制用户连接失败。
- SQL 用户定义表类型,在存储过程里使用表类型,表参数作参数
- SQL 用户定义表类型,在存储过程里使用数据类型作参数
- iOS项目开发实战——使用Xcode6设计自己定义控件与图形
- 数据导入:从文本文件导入用户信息。数据导出:将用户信息导出到文本文件。 带参数的写法 适合登陆使用
- MFC/VC++中怎样让用户定义的控件和使用的第三方控件相关联
- Android经常使用自己定义控件(二)
- 如何将自己代码的核心部分对用户“隐藏”起来,使用导入静态库。
- 还原Wss3.0内容数据库时遇到:"ComputerName\Microsoft##SSEE 上的 WSS_Content 包含用户定义的架构。数据库在能够使用之前必须为空。请删除所有表、存储过程以及其他对象,或使用其他数据库。 " 的提示,无法加载内容数据库
- [导入]使用Flash打造可定义界面风格的文件上传控件
- 记录eclipse 外部导入的工程无法使用自己定义的代码风格问题
- MSSQL中存储过程的可选参数的定义和使用_SQL高亮显示
- 封装一个用户控件的pager.ascx文件供自己使用
- 解决在ascx使用outputcache就不可以设置用户控件自己的属性
- Android经常使用自己定义控件
- OC中使用UI自己定义控件实现计算器的设计(版本号1简单的加减乘除,连加,连减,连除,连乘)