ASP数据库操作常用函数集

 ASP数据库操作常用函数集,经典的东西收藏备用。

代码来源于Mir ZhouYang。

dbinit()                        连接数据库  

opendb(asqlstr,rs_temp)         打开记录集的函数  

selectdb(awherestr,dbname,rs_temp) 打开表的函数   

deletedb(awherestr,dbname)      数据库删除记录的函数  

updatedb(aarr,awherestr,dbname) 数据库修改记录的函数  

insertdbex(aarr,dbname,rs_temp) 数据库增加记录的函数  

insertdbrs(aarr,dbname)         数据库增加记录(insert into)返回当前记录id  

insertdb(aarr,dbname)           数据库插入记录的函数  

dbclose()                       页面结束关闭数据库 

 

ASP/Visual Basic代码
  1. <%   
  2. '=============================================  
  3. 'dbinit()                        连接数据库  
  4. 'opendb(asqlstr,rs_temp)         打开记录集的函数  
  5. 'selectdb(awherestr,dbname,rs_temp) 打开表的函数   
  6. 'deletedb(awherestr,dbname)      数据库删除记录的函数  
  7. 'updatedb(aarr,awherestr,dbname) 数据库修改记录的函数  
  8. 'insertdbex(aarr,dbname,rs_temp) 数据库增加记录的函数  
  9. 'insertdbrs(aarr,dbname)         数据库增加记录(insert into)返回当前记录id  
  10. 'insertdb(aarr,dbname)           数据库插入记录的函数  
  11. 'dbclose()                       页面结束关闭数据库  
  12. '========================================  
  13. dim Conn,rs_Event   
  14.   Set rs_Event = Server.CreateObject("ADODB.RecordSet")   
  15.   
  16. function dbinit()   
  17.   if conn <> null then    
  18.     exit function    
  19.   end if    
  20. Set conn = Server.CreateObject("ADODB.Connection")   
  21. conn.ConnectionTimeout = 10   
  22. conn.CommandTimeout = 30   
  23. conn.CursorLocation = 3   
  24. conn.ConnectionString = "driver={SQL Server};server="+database_servername+";uid="+database_loginname+";pwd="+database_password+";database="+database_name   
  25.   
  26. on Error Resume Next  
  27. conn.Open    
  28.            if err<>0 then   
  29.                       response.write "请验查数据库服务器的连接信息是否正确。"  
  30.                       response.end   
  31.            end if   
  32. end function    
  33.   
  34. function opendb(asqlstr,rs_temp)   
  35. '打开记录集的函数  
  36. 'asqlstr 是输入sql语句  
  37. 'rs_temp 是输入记录集变量  
  38. 'on Error Resume Next  
  39.   Set rs_temp = Server.CreateObject("ADODB.RecordSet")   
  40.   if rs_temp.state = adStateOpen then    
  41.     rs_temp.close   
  42.   end if    
  43. '  Response.Write asqlstr  
  44.   set rs_temp=server.createobject("adodb.recordset")   
  45.   rs_temp.CursorLocation=adUseClient   
  46.   rs_temp.open asqlstr, conn,adOpnestatic,adLockReadOnly,adCmdText   
  47. end function    
  48.   
  49. function selectdb(awherestr,dbname,rs_temp)   
  50. '打开表的函数  
  51.   
  52. 'awherestr 是sql中条件很语句  
  53. 'dbname  是数据表名  
  54. 'rs_temp 是记录集变量  
  55. 'on Error Resume Next  
  56.   selectdb = 1   
  57.   if rs_temp.state = adStateOpen then    
  58.     rs_temp.close   
  59.   end if    
  60.   rs_temp.CursorLocation=adUseClient   
  61.  'response.write "Select * from "&dbname&awherestr  
  62.   
  63.   rs_temp.open "Select * from "&dbname&awherestr, conn,adOpnestatic,adLockReadOnly,adCmdText   
  64.   if Conn.Errors.Count > 0 then    
  65.       selectdb =  0   
  66.    end if    
  67. end function    
  68.   
  69.   
  70. function selectdbtop(awherestr,dbname,rs_temp)   
  71. '打开表的函数  
  72. 'awherestr 是sql中条件很语句  
  73. 'dbname  是数据表名  
  74. 'rs_temp 是记录集变量  
  75. 'on Error Resume Next  
  76.   selectdb = 1   
  77.   if rs_temp.state = adStateOpen then    
  78.     rs_temp.close   
  79.   end if    
  80.   rs_temp.CursorLocation=adUseClient   
  81.  'response.write "Select * from "&dbname&awherestr  
  82.   rs_temp.open "Select * from "&dbname&awherestr, conn,adOpnestatic,adLockReadOnly,adCmdText   
  83.   if Conn.Errors.Count > 0 then    
  84.       selectdb =  0   
  85.    end if    
  86. end function    
  87.   
  88.   
  89. function deletedb(awherestr,dbname)   
  90. '数据库删除记录的函数  
  91. 'awherestr 是sql中条件很语句  
  92. 'dbnaem 是数据库名称  
  93. 'on Error Resume Next  
  94.    deletedb = 1   
  95.    Conn.Execute "delete from "&dbname&awherestr   
  96.    if Conn.Errors.Count > 0 then    
  97.      deletedb =  0   
  98.    end if    
  99. end function    
  100. function updatedb(aarr,awherestr,dbname)   
  101. '数据库修改记录的函数  
  102. 'aarr 修改数组  
  103. 'awherestr 是sql中条件很语句  
  104. 'dbnaem 是数据库名称  
  105. 'on Error Resume Next  
  106. dim i    
  107.    updatedb = 1   
  108.    t_values = ""  
  109.    for i=0 to ubound(aarr) - 1   
  110.      t_values=t_values&aarr(i,0)"='"&replace(aarr(i,1),"'","''")"',"  
  111.    next   
  112.    t_values=left(t_values,len(t_values) -1)   
  113.    Conn.Execute "update "&dbname" set "&t_values&awherestr   
  114.   
  115.    if Conn.Errors.Count > 0 then    
  116.       updatedb =  0   
  117.    end if    
  118.       
  119. end function    
  120. function insertdbex(aarr,dbname,rs_temp)   
  121. 'on Error Resume Next  
  122.   dim i   
  123.    insertdbex = 1   
  124.   if rs_temp.state = adStateOpen then    
  125.     rs_temp.close    
  126.   end if     
  127.    rs_temp.ActiveConnection = conn   
  128.    rs_temp.CursorType = adOpenKeyset   
  129.    rs_temp.LockType = adLockOptimistic   
  130.    rs_temp.source = dbname   
  131.    rs_temp.Open   
  132.    rs_temp.AddNew   
  133.    for i=0 to ubound(aarr) - 1   
  134.      
  135.   
  136.     rs_temp(aarr(i,0)) = aarr(i,1)   
  137.    next     
  138.   
  139.   
  140.    rs_temp.update   
  141.    if  Err.number <>  0 then    
  142.       response.write err.description   
  143.       response.end   
  144.       insertdbex =  0   
  145.    end if    
  146. end function    
  147. function insertdb(aarr,dbname)    
  148. '数据库插入记录的函数  
  149. 'dbnaem 是数据库名称  
  150. 'on Error Resume Next  
  151.   dim i    
  152.    err.clear   
  153.    insertdb = 1   
  154.    t_values = ""  
  155.    t_fields = ""  
  156.    for i=0 to ubound(aarr) - 1   
  157.      t_fields = t_fields&aarr(i,0)","  
  158.      t_values=t_values"'"&replace(aarr(i,1),"'","''")"',"        
  159.    next   
  160.    t_values=left(t_values,len(t_values) -1)   
  161.    t_fields=left(t_fields,len(t_fields) -1)   
  162.   
  163.    Conn.Execute "insert into "&dbname" ("&t_fields") values ("&t_values")"  
  164.       
  165.    if (Conn.Errors.Count > 0) or (err.number <> 0)  then    
  166.       insertdb =  0   
  167.    end if    
  168.       
  169. end function    
  170.   
  171. function insertdbrs(aarr,dbname)    
  172. '数据库插入记录的函数  
  173. 'aarr 增加数组  
  174. 'dbnaem 是数据库名称  
  175. 'on Error Resume Next  
  176.   dim i    
  177.    err.clear   
  178.    insertdbrs = 1   
  179.    t_values = ""  
  180.    t_fields = ""  
  181.    for i=0 to ubound(aarr) - 1   
  182.      t_fields = t_fields&aarr(i,0)","  
  183.      t_values=t_values"'"&replace(aarr(i,1),"'","''")"',"        
  184.    next   
  185.    t_values=left(t_values,len(t_values) -1)   
  186.    t_fields=left(t_fields,len(t_fields) -1)   
  187.   
  188.    set returnrs=Conn.Execute("SET NOCOUNT ON;insert into "&dbname" ("&t_fields") values ("&t_values");SELECT @@IDENTITY")   
  189.   
  190.    if (Conn.Errors.Count > 0) or (err.number <> 0)  then    
  191.       insertdbrs =  0   
  192.    end if    
  193.   
  194.    insertdbrs=returnrs(0)   
  195.    returnrs.close   
  196.   
  197. end function    
  198. '页面结束关闭数据库  
  199. function dbclose()   
  200.   Conn.Close   
  201. end function    
  202.   
  203.   
  204. %>  
Posted in 数据库 at September 21, 2007. by 傻猫 .    Views: 3776    No Comments

SplitString分隔函数

function SplitString(Source, Deli: string ): TStringList;
var
    EndOfCurrentString: byte;
    StringList:TStringList;
begin
    StringList:=TStringList.Create;
    while Pos(Deli, Source)>0 do
    begin
        EndOfCurrentString := Pos(Deli, Source);
        StringList.add(Copy(Source, 1, EndOfCurrentString - 1));
        Source := Copy(Source, EndOfCurrentString + length(Deli), length(Source) - EndOfCurrentString);
    end;
    Result := StringList;
    StringList.Add(source);
end;

Posted in 软件开发 at May 27, 2006. by 傻猫 .    Views: 5425    No Comments

delphi中常用的字符处理函数

[php]

copy(str,pos,num) 从str字符串的pos处开始,截取num个字符的串返回.假设str为'abcdef',copy(str,3,2)='cd',copy(str,4,10)='def'
concat(str1,str2{,strn}) 把各自变量连接起来,返回连接后的字符串(长度不能超过255)
length(str) 返回str的字符个数,即其长度.
pos(obj,target) 在target字符串中找出第一个出现obj的第一个字符位置,如果找不到,返回0.
AnsiStrLastChar('你好')结果是“好”。如果有半个汉字出现,返回这半个汉字。二者字符串长度分别为2和1。
CompareStr - 区分大小写
CompareText - 不区分大小写
////////////////////////////////////////////////////////
{判断字符是否是数字}
function IsDigit(ch: char): boolean;
begin
Result := ch in ['0'..'9'];
end;
{判断字符是否是大写字符}
function IsUpper(ch: char): boolean;
begin
Result := ch in ['A'..'Z'];
end;
{判断字符是否是小写字符}
function IsLower(ch: char): boolean;
begin
Result := ch in ['a'..'z'];
end;
{转换为大写字符}
function ToUpper(ch: char): char;
begin
Result := chr(ord(ch) and $DF);
end;
{转换为小写字符}
function ToLower(ch: char): char;
begin
Result := chr(ord(ch) or $20);
end;
{ Capitalizes first letter of every word in s }
function Proper(const s: string): string;
var
i: Integer;
CapitalizeNextLetter: Boolean;
begin
Result := LowerCase(s);
CapitalizeNextLetter := True;
for i := 1 to Length(Result) do
begin
if CapitalizeNextLetter and IsLower(Result[i]) then
Result[i] := ToUpper(Result[i]);
CapitalizeNextLetter := Result[i] = ' ';
end;
end;
////////////////////////////////////////////////////////////
{返回两个子字符串之间字符的个数}
Function p2pcount( s, ss1, ss2 : string ): integer;
var i, j, slen : integer;
begin
i := pos( ss1, s );
j := pos( ss2, s );
slen := Length(ss2);
if j >= i then Result := j - i + slen else Result := 0;
end;
{更快速的字符查询,快40%}
function ScanStr(ToScan: PChar; Sign: Char):PChar;
begin
Result:= nil;
if ToScan <> nil then
while (ToScan^ <> #0) do begin
if ToScan^ = Sign then begin
Result:= ToScan;
break;
end;
inc(ToScan);
end;
end;
/////////////////////////////
替换字符串中子串的函数,他可以从字符串中找出指定子串,并替换为另一子串。
function replacing(S,source,target:string):string;
var site,StrLen:integer;
begin
{source在S中出现的位置}
site:=pos(source,s);
{source的长度}
StrLen:=length(source);
{删除source字符串}
delete(s,site,StrLen);
{插入target字符串到S中}
insert(target,s,site);
{返回新串}
replacing:=s;
end;
///////////////////////
另两个替换字符串中子串的函数
function repl_substr( sub1, sub2, s: string ): string;
var i: integer;
begin
repeat
i := pos( sub1, s ) ;
if i > 0 then begin
delete( s, i, Length(sub1));
insert( sub2, s, i );
end;
until i < 1;
Result := s;
end;
function ReplaceText(const S,ReplacePiece,ReplaceWith: String):String;
Var Position: Integer;
TempStr: String;
begin
Position := Pos(ReplacePiece,S);
if Position > 0 then Begin
TempStr := S;
Delete(TempStr,1,Position-1+Length(ReplacePiece));
Result :=
Copy(S,1,Position-1)+ReplaceWith+ReplaceText(TempStr,ReplacePiece,ReplaceWith)
End else Result := S;
end;
////////////////////////
替换全部子字符串的函数
function ReplaceSub(str, sub1, sub2: String): String;
var
aPos: Integer;
rslt: String;
begin
aPos := Pos(sub1, str);
rslt := '';
while (aPos <> 0) do begin
rslt := rslt + Copy(str, 1, aPos - 1) + sub2;
Delete(str, 1, aPos + Length(sub1));
aPos := Pos(sub1, str);
end;
Result := rslt + str;
end;
/////////////////////////
在字符串左右填充指定数量的指定字符
function UT_PadString(inString :string; maxLength :integer; padChar :char;
left :boolean) :string;
begin
result := inString;
while (Length(result) < maxLength) do
if (left) then
result := padChar + result
else
result := result + padChar;
end;
/////////////////////////////////////
提取字符串中指定子字符串前的字符串
Function Before ( Src:string ; Var S:string ) : string ;
Var
F : Word ;
begin
F := POS (Src,S) ;
if F=0 then
Before := S
else
Before := COPY(S,1,F-1) ;
end ;
//////////////////////////////////
提取字符串中指定子字符串后的字符串
Function After ( Src:string ; Var S:string ) : string ;
Var
F : Word ;
begin
F := POS (Src,S) ;
if F=0 then
After := ''
else
After := COPY(S,F+length(src),length(s)) ;
end ;
////////////////////////////////////
判断字符串是否可以转换为整数
function IsIntStr(const S: string): boolean;
begin
Result:=StrToIntDef(S,0)=StrToIntDef(S,1);
end;
//////////////////////////////////////
从字符串中删除指定字符串
procedure RemoveInvalid(what, where: string): string;
var
tstr: string;
begin
tstr:=where;
while pos(what, tstr)>0 do
tstr:=copy(tstr,1,pos(what,tstr)-1) +
copy(tstr,pos(what,tstr)+length(tstr),length(tstr));
Result:=tstr;
end;
用法:
NewStr:=RemoveInvalid('<invalid>','This <invalid> is my string and I wan to
remove the word <invalid>');
///////////////////////////////////////////
根据某个字符分割字符串的函数
procedure SeparateTerms(s : string;Separator : char;Terms : TStringList);
{ This browses a string and divide it into terms whenever the given
separator is found. The separators will be removed }
var
hs : string;
p : integer;
begin
Terms.Clear; // First remove all remaining terms
if Length(s)=0 then // Nothin' to separate
Exit;
p:=Pos(Separator,s);
while P<>0 do
begin
hs:=Copy(s,1,p-1); // Copy term
Terms.Add(hs); // Add to list
Delete(s,1,p); // Remove term and separator
p:=Pos(Separator,s); // Search next separator
end;
if Length(s)>0 then
Terms.Add(s); // Add remaining term
end;
==========
= 用 法
==========
var
Terms : TStringList;
i : integer;
const
TestStr = '1st term;2nd term;3rd term';
begin
Terms:=TStringList.Create;
SeparateTerms(TestStr,';',Terms);
for i:=0 to terms.Count-1 do
ShowMessage(Terms.Strings[i]);
Terms.Free;
end;
/////////////////////////////
根据一组字符分割字符串的函数
type
Charset = set of Char;
var
f : Text;
s : String;
procedure WriteStringSplitted(var s: String; Separators: Charset);
var
a,e : Integer; {anfang und ende des w鰎tchens}
begin
a := 1;
for e := 1 to Length(s) do
if s[e] in Separators then begin
WriteLn(Copy(s, a, e-a));
a := e + 1;
end;
WriteLn(Copy(s, a, e-a+1));
end;
begin
Assign(f, 'c:\dingsbums\text.txt');
Reset(f);
while not EOF(f) do begin
ReadLn(f,s);
WriteStringSplitted(s, [':', ',']);
end;
Close(f);
end.
//////////////////////////////////////////////////
{===============================================================}
{ 函数 : RESULTSTRING = HexToBin(HEXSTRING)
{ 目的 : 把十六进制字符串转换为二进制字符串
{
{===============================================================}
{ 函数 : RESULTINTEGER = HexCharToInt(HEXCHAR)
{ 目的 : 转换一个十六进制字符为整数
{===============================================================}
{ 函数 : RESULTSTRING = HexCharToBin(HEXCHAR)
{ 目的 : 转换一个十六进制字符为二进制字符串
{===============================================================}
{ 函数 : RESULTINTEGER = Pow(BASE,POWER)
{ 目的 : 指数函数
{===============================================================}
{ 函数 : RESULTINTEGER = BinStrToInt(BINSTRING)
{ 目的 : 把二进制字符串转换为整数
{===============================================================}
{ 函数 : RESULTSTRING = DecodeSMS7Bit (PDUSTRING)
{ 目的 : 解码一个7-bit SMS (GSM 03.38) 为ASCII码
{===============================================================}
{ 函数 : RESULTSTRING = ReverseStr (SOURCESTRING)
{ 目的 : 反转一个字符串
{===============================================================}
unit BinHexTools;
interface
function HexToBin(HexNr : string): string;
function HexCharToInt(HexToken : char):Integer;
function HexCharToBin(HexToken : char): string;
function pow(base, power: integer): integer;
function BinStrToInt(BinStr : string) : integer;
function DecodeSMS7Bit(PDU : string):string;
function ReverseStr(SourceStr : string) : string;
implementation
uses sysutils, dialogs;
function HexCharToInt(HexToken : char):Integer;
begin
{if HexToken>#97 then HexToken:=Chr(Ord(HexToken)-32);
{ use lowercase aswell }
Result:=0;
if (HexToken>#47) and (HexToken<#58) then { chars 0....9 }
Result:=Ord(HexToken)-48
else if (HexToken>#64) and (HexToken<#71) then { chars A....F }
Result:=Ord(HexToken)-65 + 10;
end;
function HexCharToBin(HexToken : char): string;
var DivLeft : integer;
begin
DivLeft:=HexCharToInt(HexToken); { first HEX->BIN }
Result:='';
{ Use reverse dividing }
repeat { Trick; divide by 2 }
if odd(DivLeft) then { result = odd ? then bit = 1 }
Result:='1'+Result { result = even ? then bit = 0 }
else
Result:='0'+Result;
DivLeft:=DivLeft div 2; { keep dividing till 0 left and length = 4 }
until (DivLeft=0) and (length(Result)=4); { 1 token = nibble = 4 bits }
end;
function HexToBin(HexNr : string): string;
{ only stringsize is limit of binnr }
var Counter : integer;
begin
Result:='';
for Counter:=1 to length(HexNr) do
Result:=Result+HexCharToBin(HexNr[Counter]);
end;
function pow(base, power: integer): integer;
var counter : integer;
begin
Result:=1;
for counter:=1 to power do
Result:=Result*base;
end;
function BinStrToInt(BinStr : string) : integer;
var counter : integer;
begin
if length(BinStr)>16 then
raise ERangeError.Create(#13+BinStr+#13+
'is not within the valid range of a 16 bit binary.'+#13);
Result:=0;
for counter:=1 to length(BinStr) do
if BinStr[Counter]='1' then
Result:=Result+pow(2,length(BinStr)-counter);
end;
function DecodeSMS7Bit(PDU : string):string;
var OctetStr : string;
OctetBin : string;
Charbin : string;
PrevOctet: string;
Counter : integer;
Counter2 : integer;
begin
PrevOctet:='';
Result:='';
for Counter:=1 to length(PDU) do
begin
if length(PrevOctet)>=7 then { if 7 Bit overflow on previous }
begin
if BinStrToInt(PrevOctet)<>0 then
Result:=Result+Chr(BinStrToInt(PrevOctet))
else Result:=Result+' ';
PrevOctet:='';
end;
if Odd(Counter) then { only take two nibbles at a time }
begin
OctetStr:=Copy(PDU,Counter,2);
OctetBin:=HexToBin(OctetStr);
Charbin:='';
for Counter2:=1 to length(PrevOctet) do
Charbin:=Charbin+PrevOctet[Counter2];
for Counter2:=1 to 7-length(PrevOctet) do
Charbin:=OctetBin[8-Counter2+1]+Charbin;
if BinStrToInt(Charbin)<>0 then Result:=Result+Chr(BinStrToInt(CharBin))
else Result:=Result+' ';
PrevOctet:=Copy(OctetBin,1,length(PrevOctet)+1);
end;
end;
end;
function ReverseStr(SourceStr : string) : string;
var Counter : integer;
begin
Result:='';
for Counter:=1 to length(SourceStr) do
Result:=SourceStr[Counter]+Result;
end;
end.

[/php]

Posted in 软件开发 at May 8, 2006. by 傻猫 .    Views: 4954    No Comments