惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - sooloo

asp.net遍历控件的实现 [转]Creating Custom Web Controls in C# Stats(演示了如何创建一个导航条) [转]创建动态数据输入用户界面(ASP.NET 中的动态控件入门) [转]ASP.NET 页面对象模型 [转]基于功能更丰富的基础类构建您自己的 ASP.NET 页面 [转]ASP.NET中促进代码重用的2种模式 [原创]利用CSS实现页面换肤 [转] 动态加载Asp.net分页控件 [转] more than one way to skin an app [转]模拟Asp.Net Forums实现可以换皮肤的控件 [转]在ASP.Net中两种利用CSS实现多界面的方法 转:dotext数据库篇 Vs2003调试DotText时碰到的一个问题 DotText数据库分析(2) CnDotText数据库分析(1) 高程历年试题及答案 [转帖]追MM与设计模式 学习cnblogsGuestBook V2.0 --(2) 学习cnblogsGuestBook V2.0
DotText分析---新Blog注册
sooloo · 2005-09-07 · via 博客园 - sooloo

面对DotText的源代码,对偶等初学者而言,简直无从下手。只好硬着头皮捡条理清晰的下手。前面看了Blog_Config 表,看了添加新Blog的存储过程,现在自然会想到blog_UTILITY_AddBlog是如何被调用的。
很容易在.\DotTextWeb下找到 register.aspx和register.aspx.cs.重点分析代码文件。

使用了以上几个命名空间。Dottext.Framework命名空间的类视图如下:

一头雾水。。。。继续看代码

前面声明了一些页面的Web控件,主要是一些文本录入控件,验证控件,按钮之类。
后面page_load()这段,表示从"~/Admin/Skins.config"XML文件中,读取内容,绑定到DropDownList ddlSkin中。

再来看当“注册”按钮被按下后

        private void Linkbutton1_Click(object sender, System.EventArgs e)
        
{
            
if(this.txbTitle.Text=="")
            
{
                
this.txbTitle.Text=this.txbUser.Text;
            }

            
string host = Config.Settings.AggregateHost;//ConfigurationSettings.AppSettings["AggregateHost"] as string;
            string url = Config.Settings.AggregateUrl;
            
string sql = "blog_UTILITY_AddBlog";
            
string conn = Dottext.Framework.Providers.DbProvider.Instance().ConnectionString;
            
string city=Request.Form.Get("city");
            
if(city==null)
            
{
                city
="";
            }

            SqlParameter[] p 
= 
                
{
                    SqlHelper.MakeInParam(
"@UserName",SqlDbType.NVarChar,50,this.txbUser.Text),
                    SqlHelper.MakeInParam(
"@Password",SqlDbType.NVarChar,50,Security.Encrypt(this.txbPwd.Text)),
                    SqlHelper.MakeInParam(
"@Email",SqlDbType.NVarChar,50,this.txbEmail.Text),
                    SqlHelper.MakeInParam(
"@Host",SqlDbType.NVarChar,50,host),
                    SqlHelper.MakeInParam(
"@Application",SqlDbType.NVarChar,50,this.txbUser.Text),
                    SqlHelper.MakeInParam(
"@Author",SqlDbType.NVarChar,50,this.txbAuthor.Text),
                    SqlHelper.MakeInParam(
"@Title",SqlDbType.NVarChar,100,this.txbTitle.Text),
                    SqlHelper.MakeInParam(
"@SubTitle",SqlDbType.NVarChar,250,this.txbSubtitle.Text),
                    SqlHelper.MakeInParam(
"@IsHashed",SqlDbType.Bit,0,1),
                    SqlHelper.MakeInParam(
"@Skin",SqlDbType.NVarChar,50,this.ddlSkin.SelectedValue),
                    SqlHelper.MakeInParam(
"@City",SqlDbType.NVarChar,50,city),
                    
                }
;
            
//int result=0;
            try
            
{
                Dottext.Framework.Data.SqlHelper.ExecuteNonQuery(conn,CommandType.StoredProcedure,sql,p);
            }

            
catch
            
{
                Response.Write(
"<font color='red'>用户名已存在</font>");
                
//throw; 
            }

            Response.Redirect(url
+this.txbUser.Text);
        }

最最关键的一句就是:
Dottext.Framework.Data.SqlHelper.ExecuteNonQuery(conn,CommandType.StoredProcedure,sql,p);
(1)conn: 连接数据库字符串。由以下方法获取:
             string conn = Dottext.Framework.Providers.DbProvider.Instance().ConnectionString;
(2)CommandType.StoredProcedure  调用方式为存储过程。
(3)sql : 定义string sql = "blog_UTILITY_AddBlog"; 调用的存储过程名。
(4)  p : SqlParameter[] p, 及存储过程的入口参数。

SqlHelper实际上是Microsoft Application Blocks for .NET组件的一个类。Data Access Application Block 是一个 .NET 组件,包含优化的数据访问代码,可以帮助用户调用存储过程以及向 SQL Server 数据库发出 SQL 文本命令。它返回 SqlDataReader、DataSet 和 XmlReader 对象。您可以在自己的 .NET 应用程序中将其作为构造块来使用,以减少需要创建、测试和维护的自定义代码的数量。

Data Access Application Block 可以帮助您:

  • 调用存储过程或 SQL 文本命令。
  • 指定参数详细信息。
  • 返回 SqlDataReader、DataSet 或 XmlReader 对象。

SqlHelper 类提供了一组静态方法,可以用来向 SQL Server 数据库发出许多各种不同类型的命令。

SqlHelperParameterCache 类提供命令参数缓存功能,可以用来提高性能。该类由许多 Execute 方法(尤其是那些只运行存储过程的重写方法)在内部使用。数据访问客户端也可以直接使用它来缓存特定命令的特定参数集。

而且,Data Access Application Block是一个开源的代码,可以象Dottext一样用到自己的项目中。
不想过于深入,点到为止,呵呵