|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
源代码保护方面其实现在考虑得没那么多了..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可以完成无比强大的功能。 |
|