山那边是海 发表于 2015-2-16 00:25:34

ASP网页设计Ms SQL Server 中单引号的两种处置技能...

源代码保护方面其实现在考虑得没那么多了..NET也可以反编译.ASP写得复杂的话别人能看得懂的话.他也有能力自己写了.这方面担心的倒不太多. 纵观现在网上可以下载的那些所谓BBS还有什么网站等等的源代码server|技能   ---- 和数据库打交道要频仍地用到SQL语句,除非你是全体用控件绑定的体例,但采取控件绑定的体例存在着天真性差、
效力低、功效弱等等弱点。因而,大多半的法式员少少或较罕用这类绑定的体例。而采取非绑定体例时很多法式员大都忽
略了对单引号的特别处置,一旦SQL语句的查询前提的变量有单引号呈现,数据库引擎就会报错指出SQL语法不合错误,自己发
现有两种办法可以处理和处置这类单引号的成绩(以VB为例子)。

---- 办法一:使用本义字符处置SQL语句。上面的函数可以在履行SQL语句前挪用,履行处置后的了局便可发生准确的结
果。

Function ProcessStr(str As String)
Dim pos As Integer
Dim stedest As String
pos = InStr(str, "'")

While pos > 0
str = Mid(str, 1, pos) & "'" & Mid(str, pos + 1)
pos = InStr(pos + 2, str, "'")
Wend
ProcessStr = str
End Function

---- 个中str参数是你的SQL字符串。函数一旦发明字符串中有单引号呈现,就在后面补上一个单引号。
---- 办法二:使用数据对象中的参数。可以使用ADODB.COMMAND对象,把含有单引号的字符串传递给COMMAND,然后履行查
询等操作便可。

---- 以上两种办法对照,办法一增添了体系处置工夫,办法二简约、高效,假如采取存储进程,然后再传递参数给存储过
程,存储进程是预编译的,如许体系的效力更高。

---- 上面就举例子加以申明。

---- 新建一个项目,项目中有一个窗体(Form1),两个号令按钮,一个MSFlexGrid,称号分离为:Command1,
Command2,MSFlexGrid1,一个COMBOX(COMBO1),它的内容事后设定为"Paolo''f"、"Paolo'f"。Command1演示办法一,
Command2演示办法二,MSFlexGrid1存储办法二查询(SELECT)了局。关于其他的SQL操作(INSERT、DELTER、UPDATAE)办法
极其相似,笔者就不再赘述。例子顶用到SQL SERVER中的PUBS数据库中的EMPLOYEE表,同时可以用SQL语法把个中两笔记录
中的FNAME改成"Paolo''f"、"Paolo'f"。 SQL语法以下:

update employee set fname=" Paolo''''f"
where emp_id='PMA42628M'
update employee set fname=" Paolo''f"
where emp_id='PMA42628M'

---- 法式以下:
---- 起首把后面的函数到场。

---- 在窗体的通用中声明以下变量:

Dim cnn1 As ADODB.Connection '毗连
Dim mycommand As ADODB.Command '号令
Dim rstByQuery As ADODB.Recordset '了局集
Dim strCnn As String '毗连字符串
Private Sub Form_Load()
Set cnn1 = New ADODB.Connection '生成一个毗连
strCnn = "driver={SQL Server};" & _
"server=ZYX_pc;uid=sa;pwd=PCDC;database=pubs" '
没有体系数据源利用毗连字符串

'strCnn = "DSN=mydsn;UID=sa;PWD=;"
'DATABASE=pubs;Driver={SQL Server};SERVER=gzl_pc" '
假如体系数据源MYDSN指向PUBS数据库,也能够如许用
cnn1.Open strCnn, , , 0 '翻开毗连
End Sub
Private Sub Command1_Click() '演示字符处置
Dim i As Integer
Dim j As Integer
Set parm = New ADODB.Parameter
Set mycommand = New ADODB.Command

Dim str As String
str = Combo1.Text
str = ProcessStr (str)
mycommand.ActiveConnection = cnn1 '
指定该command 确当前举动毗连
mycommand.CommandText = " select * from
employee where fname = '" & str & "'"
mycommand.CommandType = adCmdText '标明command 类型
Set rstByQuery = New ADODB.Recordset
Set rstByQuery = mycommand.Execute()
i = 0
Do While Not rstByQuery.EOF
i = i + 1 ' i 中保留纪录个数
rstByQuery.MoveNext
Loop
MSFlexGrid1.Rows = i + 1 '静态设置MSFlexGrid的行和列
MSFlexGrid1.Cols = rstByQuery.Fields.count + 1
MSFlexGrid1.Row = 0
For i = 0 To rstByQuery.Fields.count - 1
MSFlexGrid1.Col = i + 1
MSFlexGrid1.Text = rstByQuery.Fields.Item(i).Name
Next '设置第一行的题目,用域名填充

i = 0
'Set rstByQuery = mycommand.Execute()
rstByQuery.Requery
Do While Not rstByQuery.EOF
i = i + 1
MSFlexGrid1.Row = i '肯定行
For j = 0 To rstByQuery.Fields.count - 1
MSFlexGrid1.Col = j + 1
MSFlexGrid1.Text = rstByQuery(j) '添充一切的列
Next
rstByQuery.MoveNext

Loop '这个轮回用来填充MSFlexGrid的内容
End Sub
Private Sub Command2_Click()'参数办法
Dim i As Integer
Dim j As Integer

Set parm = New ADODB.Parameter
Set mycommand = New ADODB.Command

' parm_jobid.Name = "name1" this line can be ommited
parm.Type = adChar '参数类型
parm.Size = 10 '参数长度
parm.Direction = adParamInput '参数偏向,输出或输入
parm.Value = Combo1.Text '参数的值
mycommand.Parameters.Append parm '到场参数



mycommand.ActiveConnection = cnn1 '
指定该command 确当前举动毗连
mycommand.CommandText = " select *
from employee where fname =? "
mycommand.CommandType = adCmdText '标明command 类型
Set rstByQuery = New ADODB.Recordset
Set rstByQuery = mycommand.Execute()
i = 0
Do While Not rstByQuery.EOF
i = i + 1 ' i 中保留纪录个数
rstByQuery.MoveNext
Loop
MSFlexGrid1.Rows = i + 1 '静态设置MSFlexGrid的行和列
MSFlexGrid1.Cols = rstByQuery.Fields.count + 1
MSFlexGrid1.Row = 0
For i = 0 To rstByQuery.Fields.count - 1
MSFlexGrid1.Col = i + 1
MSFlexGrid1.Text = rstByQuery.Fields.Item(i).Name
Next '设置第一行的题目,用域名填充

i = 0
rstByQuery.Requery
Do While Not rstByQuery.EOF
i = i + 1
MSFlexGrid1.Row = i '肯定行</p>asp可以轻松地实现对页面内容的动态控制,根据不同的浏览者,显示不同的页面内容。而浏览者一点觉察不出来,就像为他专门制作的页面一样。使用各种各样的组件,asp可以完成无比强大的功能。

飘飘悠悠 发表于 2015-2-16 01:44:22

在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。

小魔女 发表于 2015-2-23 20:23:47

尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。

老尸 发表于 2015-3-2 16:57:16

我想问如何掌握学习节奏(先学什么再学什么)最好详细点?

莫相离 发表于 2015-3-5 23:15:07

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

金色的骷髅 发表于 2015-3-11 00:22:55

在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。

乐观 发表于 2015-3-11 21:16:15

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

兰色精灵 发表于 2015-3-17 21:11:38

不能只是将它停留在纸上谈兵的程度上。

若相依 发表于 2015-3-18 15:21:19

我想问如何掌握学习节奏(先学什么再学什么)最好详细点?

仓酷云 发表于 2015-3-25 13:02:37

不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍

小女巫 发表于 2015-3-27 13:22:55

兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的

透明 发表于 2015-4-3 05:29:34

以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。

灵魂腐蚀 发表于 2015-4-7 03:40:44

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。

admin 发表于 2015-4-11 17:23:45

还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。

活着的死人 发表于 2015-4-11 23:03:15

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:

精灵巫婆 发表于 2015-4-12 19:17:17

ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。

蒙在股里 发表于 2015-4-24 22:48:00

如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:

飘灵儿 发表于 2015-4-27 16:49:14

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

简单生活 发表于 2015-5-8 02:00:13

ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。

因胸联盟 发表于 2015-6-8 23:29:25

学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。
页: [1]
查看完整版本: ASP网页设计Ms SQL Server 中单引号的两种处置技能...