asp 收集的资料了,为了方便查阅。

标签: aspsql server数据库sqltableaccess
1503人阅读 评论(0) 收藏 举报
分类:
<script type="text/javascript"><!-- google_ad_client = "pub-4490194096475053"; /* 内容页,300x250,第一屏 */ google_ad_slot = "3685991503"; google_ad_width = 300; google_ad_height = 250; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

今天将之前收集到的资料逐步更新到这里。一部分为自己写的,多数为网上收集。

06.06.07

XP下安装装SQL2000企业版本

办法如下:

  一.在SQL服务器的安装盘中找到MSDE这个目录,并且点击setup.exe安装它,过程简单直接下一步就OK了。

  二. 重启系统WINDOWSXP,这下就可以看到SQL服务的图标出现了。

三. 再拿出SQL服务器版的安装光盘,直接安装客户端工具(这个不要多说吧?最简单的方法就是直接点击光盘根目录下的autorun.exe)

根据提示安装,自检过程中知道系统不是SERVER版,会提示只安装客户端工具。(哈哈,服务端我已有了)

四. 打开企业管理器,试用SA用户连一下看看,是不是发现SA用户登陆失败?因为你还没有与信任SQL SERVER连接相关联。还好这个只要对系统注册表稍加修改就可以啦:

在运行中输入regedit打开注册表编辑器,找到[HKEY_LOCAL_MACHINESOFTWARE/MICROSOFT/MSSQLSERVER/MSSQLSERVER],这个项里面

有一个键值LoginMode,默认下,值是1,现在将值改为2,重启电脑。

五. 再打开企业管理,再连接试试,是不是OK了!
----------------------------------

 

ASP 列出 Access 数据库表名 与 查询视图名 By Stabx 作用:
列出已知 Access 数据库名中的数据库表与视图的名称
shawl.qiu
2006-5-30
CODE:

CODE:

For Example: -----------------------/视图 between_
表/--- buarticle
表/--- buclass
表/--- bunclass
表/--- bureply
表/--- butag
-----------------------/视图 count_
-----------------------/视图 count_union_1
表/--- ctarticle
表/--- ctclass
表/--- ctglossary
表/--- ctglossarysubcat
表/--- ctglossarysubsubcat
表/--- ctglossarysupercat
表/--- ctnclass
表/--- ctreply
表/--- ctsearch
表/--- cttag
-----------------------/视图 date_query_by_month
-----------------------/视图 distinct_year
-----------------------/视图 group_by_gr
-----------------------/视图 having_2
-----------------------/视图 having_repeat_title
-----------------------/视图 iif_1
-----------------------/视图 inner_join_select_3
-----------------------/视图 inner_join_select_4
-----------------------/视图 inner_join-cascading2
-----------------------/视图 isnull
-----------------------/视图 select_
-----------------------/视图 select_distinct
-----------------------/视图 select_less_great
-----------------------/视图 t3
表/--- Ta
表/--- tg
表/--- ts
表/--- ts1
表/--- tscC
表/--- tspic
-----------------------/视图 v_column_siteall
-----------------------/视图 v_column_subcat
-----------------------/视图 v_column_supercat
-----------------------/视图 v_page_article
-----------------------/视图 v_page_class_ctclass
-----------------------/视图 v_page_class_ctnclass
-----------------------/视图 v_page_ctglossary
-----------------------/视图 v_page_date
-----------------------/视图 v_page_search_ctarticle
-----------------------/视图 v_page_search_ctglossary

<% '查找数据库中所有数据库表名, 与视图为查询类型的视图
     set rs=server.createobject("Adodb.connection")
         rs.open MM_conn_string
             set rsSchema=rs.openSchema(20)'20 指定查找表,视图; 23 指定查找视图
                 while not rsSchema.EOF
                     if rsSchema("TABLE_TYPE")="TABLE" then '显示表名
                          response.write "表/--- "
                          response.write rsSchema("TABLE_NAME")
                          response.write  "<br>"   
                     end if
                     if rsSchema("TABLE_TYPE")="VIEW" then '显示视图名
                          response.write "-----------------------/视图 "
                          response.write rsSchema("TABLE_NAME")
                          response.write  "<br>"   
                     end if
                         rsSchema.movenext
                 wend
                     rsSchema.close
             set rsSchema=nothing
         rs.close
     set rs=nothing 'code by shawl.qiu
%>


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=765067
-----------------------------------------------

1、自动增加字段需要重写。在access中经常使用的自动编号字段,导入到mssql后,他并不是自增型的int,需要手工设置,把导入后的自动编号字段的标识的“否”改为“是”,“种子”和“递增量”都为“1”,才能成为自动编号。


2、所有的默认值都丢失了。主要是数字类型和日期类型


3、所有now(),time(),date()要改成getdate()


4、所有datediff('d', time1, time2)要改成datediff(day, time1, time2)


5、所有datediff('ww', time1, time2)要改成datediff(week, time1, time2)


6、所有datediff('d', time1, time2)要改成datediff(day, time1, time2)


7、在mssql server中,有许多保留字,在access中是没有的,当你把数据导入到mssql的时候,问题就出来了。mssql在导入的时候,会自动给这些字段(包括数据库中的表名)加上“[字段名]”,因此,你必须修改你的脚本,把相应的字段名字(或者表名字)加上中括号,或改变字段名字为不是mssql的保留字


8、在用access关于时间的使用,大家喜欢使用“select * from aaaa while time=&quot;&now()”这样的sql语句,然而,在mssql中没有“now()”这个函数,而是使用“getdate()”,所以,所有的sql语句中的“now()”必须换成“getdate()”。


9、日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对
    SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。


10、转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。有时用smalldatetime型时,转化失败,而用datetime型时,转化成功


11、isnull(rowname)要改成rowname = null


12、CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能显示不完整


13、备注类型要通过cast(column as varchar)来使用


14、true/false类型不能使用,要变为1/0


15、对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:"delete * from user where id=10",而对SQL SERVER数据库进行删除是用:"delete user where id=10".


16、在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用


17、在access的sql语句中的时间使用变量查询的时候,大家一般使用"select * from aaaa while time=#"&变量名&"#",在mssql中是不行的,他的语法是“select * from aaaa while time='"&变量名&"'"”。(意思是让你把日期时间变量当成字符串来使用,呵呵~~~)


18、原来ASP里的“DELETE * FROM ……”要改为“DELETE FROM ……”


19、有可能rs.update失败,修改成update 表名 set 字段=‘值’ 这样通过(遇到的情况,提示为:
Microsoft OLE DB Provider for SQL Server 错误 '80040e38'

乐观并发检查失败。已在此游标之外修改了该行。

/Admin_ClassOrder.asp,行 164 )


20、access里面除法可以使用"/"或者"/",MSSQL里面只能使用"/"

21、请在SqlServer中建立主键
(错误可能是:
ADODB.Recordset 错误 '800a0cb3'

当前 Recordset 不支持更新。这可能是提供者限制的,也可能是选定的锁定类型限制的。

/admin/ema.asp,行97 )

22、如果还有问题用:rs.open sql,conn,3,2试试

 

 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=556166

-----------------------------------------------

如何把ACCESS转成SQL数据库
[日期:2006-04-28] 来源:  作者:未知 [字体:大 中 小] 


很多朋友想用SQL2000数据库的编程方法,但是却又苦于自己是学ACCESS的,对SQL只是一点点的了解而已,这里我给大家提供以下参考---将ACCESS转化成SQL2000的方法和注意事项

一,首先,我说的是在ACCESS2000,SQL2000之间转换,其他的我也还没有尝试过,希望大家多多试验,肯定是有办法的;

二,转换的方法

1,打开”控制面板“下”管理工具“中的”数据库源“;

2,按”添加“添加一个新的数据源,在选择栏里选“Driver do microsoft Access (*.mdb)”,完成后将出现一个框,在“数据库源”里面输入你想写的名称,我取名叫“ABC”,说明不需要填,接着,按下面的选择,寻找你的数据库地址和选中(注意,请先备份自己的ACCESS数据库),然后确定。数据源在这里建好了,剩下转换了。

3,打开SQL2000企业管理器,进入数据库,新建一个空的数据库“ABC”;

4,选择新建立的数据库,按鼠标右键,选择“所有任务”下“导入数据”,按“下一步”继续;

5,在数据库源下拉但中选择”Driver do microsoft Access(*.mdb)“,在”用户/系统DSN“中,选种你刚才添加的”ABC“,按 ”下一步“;

6,“目的”不需要修改,选择服务器(一般下为自己的本机local,也可以选择服务器地址或者局域网地址,确定你的权限是否可以操作,),使用WINDOWS 身份验证指用自己的系统管理员身份操作,使用SQL身份操作验证可以用于网站的操作,推荐用后者;

7,选上使用SQL身份操作验证后,填写你的用户名和密码,我自己选择的是系统默认号码sa,****,数据库选择刚新建的ABC,按下一步;

8,这一步的两个单项选择,从数据源复制表和视图与用一条查询指令指定要传输的数据,选择前者,按下一步继续;

9,这里将出现你自己ACCESS数据库的表,按全选后,下一步;

10,DTS导入/导出向导,看立即运行被选中按下一步,

11,按完成继续;

12,这个步骤你将看到你的数据被导入SQL2000里面,当出现已经成功把XXX个表导入到数据库的字样,而且所有的表前面都有绿色的勾,就表示成功导入所有数据,如果中途出现问题或者表前面有红色的叉的话,说明该表没有成功导入,这时就要回去查看自己的操作是否正确了.

三,数据修改

1,由于SQL2000里面没有自动编号,所以你的以自动编号设置的字段都会变成非空的字段,这就必须手工修改这些字段,并把他的标示选择是,种子为1,增量为1,

2,另外,ACCESS2000转换成SQL2000后,原来属性为是/否的字段将被转换成非空的bit,这时候你必须修改成自己想要的属性了;

3,另外,大家要注意对时间函数的把握.ACCESS与SQL是有很多不同的.

ACCESS转MS SQL数据库的几点经验

1.ACCESS的数据库中的自动编号类型在转化时,sql server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号!

2.转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。我遇见这种情况,用smalldatetime型时,转化失败,而用datetime型时,转化成功。

3.对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:delete * from user where id=10,而对SQL SERVER数据库进行删除是用:delete user where id=10.

4.日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。

5.在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用。

 

------------------------------------------------

Request.ServerVariables是获取环境变量的ASP内置对象。用代码Request.ServerVariables("SCRIPT_NAME")的值就是当前执行的ASP页面的路径。例如,访问http://www.scat.com/aBc/test.asp(注意大小写!)时,Request.ServerVariables("SCRIPT_NAME")的值就是:“/aBc/test.asp“

------------------------------------------------

来源为网络114最新网上购物系统,在资料中已经搜集。
<!--#include file="top.asp"-->
<%
 
 dim sort_id, sort_name, Nsort_id, Nsort_name
    dim totalPut  
    dim CurrentPage, TotalPages
  
        if request("sort_id")<>"" then
  sort_id=request("sort_id")
    else
  sort_id=0
    end if
 if request("sort_id")="" then
 sort_id=1
 end if
    if not isempty(request("page")) then
        currentPage=cint(request("page"))
    else
        currentPage=1
    end if
   
 dim order
 if request("order")<>"" then
     order=request("order")
  else
  order="time"
  end if
  'rs.close
    'else
 ' Nsort_id=0
 ' Nsort_name="分类"
   ' end if
 
  sql="select * from sort where sort_ID="&cstr(sort_id)
   rs.open sql,conn,1,1
 if not rs.eof then
 sort_name=rs("sort_name")
  end if
 rs.close
%>

<table width=778 border=0 align="center" cellpadding=0 cellspacing=0>
  <tbody>
  <tr>
    <td width=181 align="center" valign="top"><!--#include file="log.asp"-->
<!--#include file="insearch.asp"-->   
<!--#include file="insort.asp"--></td>
    <td  height=150 valign="top">
      <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" style="margin-bottom: 6" height="338">
        <tr bgcolor="#FFFFFF">
          <td height="338" colspan="2" align="center" valign="top">
            <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" style="margin-bottom: 6">
              <tr>
                <td height="100" colspan="2" bgcolor="#FFFFFF">
                  <div align="center"></div>
                  <table width="100%" height="5" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
                    <tr>
                        <td align="center">
<%
  set ad=server.CreateObject("adodb.recordset")
  sql="select  * from logo where  sort="&request("sort_id")
  ad.open sql,conn,1,1
  do while not ad.eof
%>
<tr>
  <td align="center">
    <a href="<%=ad("url")%>"target="_blank"><img src="<%=ad("banner")%>" width="575" height="118" border="0"></a></td>
</tr>
<%
ad.movenext
loop
ad.close
%></td>
                    </tr>

                    <%set rs=server.createobject("adodb.recordset")
sort_id=trim(request("sort_id"))
      if sort_id=empty then
          response.redirect "index.asp"
      end if
      
      page=request.querystring("page")
      if page="" then page=1
      if not(isnumeric(page)) then page=1
      if page<1 then page=1
      page=int(page)
     
if Nsort_id<>0 then
 sql="select * from hw where Nsort_id="+cstr(Nsort_id)+" and sort_id="+cstr(sort_id)+"  order by hw_id desc"
elseif sort_id<>0 then
 sql="select * from hw where sort_id="+cstr(sort_id)+" order by hw_id desc"
else
 sql="select * from hw order by hw_id desc"
end if

if order="time" then
    sql="select * from hw where sort_id="+cstr(sort_id)+" order by hw_id desc"
 elseif order="price1" then
    sql="select * from hw where sort_id="+cstr(sort_id)+" order by hw_cash desc , hw_id desc"
 elseif order="price2" then
 sql="select * from hw where sort_id="+cstr(sort_id)+" order by hw_cash asc , hw_id desc"
 end if
 
  
      rs.open sql,conn,3,3
      if rs.eof then
          response.write "你所选的类别没有商品"
          response.end
      else
          rs.pagesize=16
          totalrec=rs.recordcount
          totalpage=rs.pagecount
          if page>totalpage then page=totalpage
          rs.absolutepage=page
          rs.cachesize=rs.pagesize
          %>
                    <tr>
                      <td  height="2">
<div align="center">
<table width="575" border="0" bgcolor="#F7F7F7">
                                  <tr>
                                    <td style="border-left-width: 1px; border-right-width: 1px; border-top: 1px solid #C8C8C8; border-bottom: 1px solid #C8C8C8" bgcolor="#F7F7F7" height="25"><div align="left">产品 <b><%=sort_name%></b>,共 <b><%=totalrec%></b> 件,这是第 <%=(page-1)*16+1%>--<%if page+1<=totalpage then%><%=page*16%><%else%><%=totalrec%><%end if%> 件</div></td>
                                  </tr>
                                </table>
                                </div>
                                </td>
                    </tr>
                    <tr>
                      <td width="100%">
 <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
                                                    <tr>
<%i=0
          do while not rs.eof and (i<rs.pagesize)
          i=i+1
         %>
                                                      <td width="25%" height="134" align="left" bgcolor="#FFFFFF">
              <div align="center">
 <table width="100" border="0" cellpadding="0" style="border-collapse: collapse" bordercolor="#111111">
                     
                      <tr>
                        <td align="center" width="100" height="100">
                        <a target="_blank" href="views.asp?hw_id=<%=rs("hw_id")%>">
                        <img border="0" src="<%=rs("hw_pic")%>" width="90" height="90"  style="border: 1px solid #C0C0C0"></a></td>
                      </tr> <tr>
                        <td valign="bottom" align="center" height="20"><b><%=rs("hw_name")%></b></td>
                      </tr>
      <tr>
                        <td align="center">市场价:<s><%=rs("pifa")%></s>元</td>
                      </tr>
      <tr>
                        <td align="center">会员价:<font color="#D03430"><%=rs("hw_cash")%></font>元</td>
                      </tr>
     
                      <tr>
                        <td align="center">积分:<%=rs("isbn")%></td>
                      </tr>
                      <tr>
                        <td valign="top" align="center">
                        <a target="_blank" href="views.asp?hw_id=<%=rs("hw_id")%>"><img border="0" src="img/xiang.gif"></a>
                        <a href='javascript:openbag(<%=rs("hw_id")%>)'><img border="0" src="img/buy.gif"></a></td>
                      </tr>
                      </table>
</div>
</td>
<%
  if (i mod 4=0) and i>=4 then
%>
                                                    </tr>
             <tr>
                       <%
 end if
rs.movenext
loop
rs.close
%>
                                                    </tr>
                                                  </table></td>
                    </tr>
                    <tr>
                      <td width="100%" height="20">
                        <div align="center"></div>
                      </td>
                    </tr>
                    <tr>
                      <td width=478 height="23">
                        <p align="right">第<%=page%>页/共<%=totalpage%>页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <%if page-1>0 then%><a href="sort.asp?sort_id=<%=sort_id%>&page=<%=page-1%>&order=<%=order%>">上一页</a>
                          <%else%>
                          上一页
                          <%end if%>
                           
                          <%if page+1<=totalpage then%>
                          <a href="sort.asp?sort_id=<%=sort_id%>&amp;page=<%=page+1%>&order=<%=order%>">下一页</a>
                          <%else%>
                          下一页
                          <%end if
        end if%>
                          </font></p>
                      </td>
                    </tr>
                  </table>
                </td>
              </tr>
            </table>
          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}
//-->
</script>
<!--#include file="copy.asp"-->

-------------------------------------------------

<!--index.htm---------------------->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<table width="770" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><form name="form1" method="post" action="send.asp">
<table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCFFFF">
<tr>
<td height="20"><div align="center">发送消息</div></td>
</tr>
<tr>
<td><div align="center">
<textarea name="msg" cols="100" rows="6"></textarea>
</div></td>
</tr>
<tr>
<td><div align="center">
<input type="submit" name="Submit" value="Submit">
<input type="reset" name="Submit2" value="Reset">
</div></td>
</tr>
</table>
</form></td>
</tr>
</table>
</body>
</html>

'//send.asp
<%
function chan_time(shijian)'转换日期时间函数
s_year=year(shijian)
if len(s_year)=2 then s_year="20"&s_year
s_month=month(shijian)
if s_month<10 then s_month="0"&s_month
s_day=day(shijian)
if s_day<10 then s_day="0"&s_day
s_hour=hour(shijian)
if s_hour<10 then s_hour="0"&s_hour
s_minute=minute(shijian)
if s_minute<10 then s_minute="0"&s_minute
chan_time=s_year & s_month & s_day & s_hour & s_minute
end function

function chan_data(shijian) '转换日期时间函数
s_year=year(shijian)
if len(s_year)=2 then s_year="20"&s_year
s_month=month(shijian)
if s_month<10 then s_month="0"&s_month
s_day=day(shijian)
if s_day<10 then s_day="0"&s_day
chan_data=s_year & s_month & s_day
end function
function chan_file(shijian)'转换日期时间函数
s_month=month(shijian)
if s_month<10 then s_month="0"&s_month
s_day=day(shijian)
if s_day<10 then s_day="0"&s_day
s_hour=hour(shijian)
if s_hour<10 then s_hour="0"&s_hour
s_minute=minute(shijian)
if s_minute<10 then s_minute="0"&s_minute
s_ss=second(shijian)
if s_ss<10 then s_ss="0"&s_ss
chan_file = s_month & s_day & s_hour & s_minute & s_ss
end function
top="<html><head><title>news</title></head><body>"
botom="</body></html>"
msg=request.Form("msg")
msg=replace(msg,vbcrlf,"")
msg=replace(msg,chr(9),"")
msg=replace(msg," ","&nbsp;")
msg=replace(msg,"","<br>")
msg=replace(msg,"/n","<br>")
msg=top&msg&botom
Set fs=Server.CreateObject("Scripting.FileSystemObject")
all_tree2=server.mappath("news")&"/"&chan_data(now)
if (fs.FolderExists(all_tree2)) then'判断今天的文件夹是否存在
else
fs.CreateFolder(all_tree2)
end if
pass=chan_file(now)
randomize '使用系统计时器来初始化乱数产生器
pass=rnd(pass)
pass=get_pass(pass)
pass=left(pass,10)
file1=pass
files=file1&".txt"
filez=all_tree2&"/"&files

set ts = fs.createtextfile(filez,true) '写文件
for z=1 to len(msg)
write_now=mid(msg,z,1)
ts.write(write_now)
next
' ts.writeline(all_msg)
ts.close
set ts=nothing '文件生成

if err.number<>0 or err then%>
<script language="javascript">
alert("不能完成")
</script>
<%else%>
<script language="javascript">
alert("已完成")
history.back();
</script>
<%end if
Set MyFile = fs.GetFile(filez)
all_tree2=server.mappath("news")&"/"&chan_data(now)
if (fs.FolderExists(all_tree2)) then
else
fs.CreateFolder(all_tree2)
end if
MyFile.name= left(MyFile.name,len(MyFile.name)-4)&".htm"
set MyFile=nothing
set fs=nothing
set fdir=nothing
function get_pass(pass)

pass=replace(pass," ","")
pass=replace(pass," ","")
pass=replace(pass,"-","")
pass=replace(pass," ","")
pass=replace(pass,":","")
pass=replace(pass,".","")
pass=replace(pass,"+","")
pass=replace(pass,"_","")
pass=replace(pass,"<","")
pass=replace(pass,">","")
pass=replace(pass,"!","")
pass=replace(pass,"@","")
pass=replace(pass,"#","")
pass=replace(pass,"$","")
pass=replace(pass,"%","")
pass=replace(pass,"^","")
pass=replace(pass,"&","")
pass=replace(pass,"*","")
pass=replace(pass,"(","")
pass=replace(pass,")","")
pass=replace(pass,"=","")
pass=replace(pass,"/","")
pass=replace(pass,"/","")
pass=replace(pass,"|","")
get_pass=pass

end function

%>


'//

把send.asp和index.htm放到你的ASP目录下,然后再建一个news文件夹。打开浏览器,在地址栏里输入:http://你的机器名/你的ASP虚拟目录名/index.html输入文字,然后提交,OK!看看你的ASP目录里新建的news文件夹里是不是多了个新的文件夹,而且是以当前日期命名的。里面有你刚刚提交的文字,看看是不是生成了HTML文件。怎么样,你可以在此基础上做个简单的新闻发布系统。。
------------------------------------------------

FSO生成静态HTML文件的时候替换模板标签一直是一个很麻烦的问题,至少我是这么认为的,还要别外做一个模板,麻烦!,我今天看见有一个方法可以解决这个问题

如一个正常的index.asp页面,并且用ASP代码调出数据库中的内容,另建一个makehtml.asp的页面,加入一个textarea域,假设为name="body",将index.asp在textarea里调出来,如:
<textarea name="body"><!--#include file="index.asp"--></textarea>,将这个textarea包含在表单中,在接收表单页用创建FSO对象,如下生成index.html文件!

<%
filename="../index.html"
if request("body")<>"" then
set fso = Server.CreateObject("Scripting.FileSystemObject")
set fout = fso.CreateTextFile(server.mappath(""&filename&""))
fout.write request.form("body")
fout.close
set fout=nothing
set fso=nothing
end if
%>

这样index.html文件就生成了,连模板都用不着,只要将正常情况下使用的ASP文件读取到textarea里就可以了,目前尚未发现问题!当然前提是服务器要支持FSO

------------------------------------------------

一、先介绍一下什么是存储过程
存储过程是利用SQL Server所提供的Tranact-SQL语言所编写的程序。Tranact-SQL语言是SQL Server提供专为设计数据库应用程序的语言,它是应用程序和SQL Server数据库间的主要程序式设计界面。它好比Oracle数据库系统中的Pro-SQL和Informix的数据库系统能够中的Informix-4GL语言一样。这类语言主要提供以下功能,让用户可以设计出符合引用需求的程序:
1)、变量说明
2)、ANSI兼容的SQL命令(如Select,Update….)
3)、一般流程控制命令(if…else…、while….)
4)、内部函数

二、存储过程的书写格

CREATE PROCEDURE [拥有者.]存储过程名[;程序编号]
[(参数#1,…参数#1024)]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
]
[FOR REPLICATION]
AS 程序行

其中存储过程名不能超过128个字。每个存储过程中最多设定1024个参数
(SQL Server 7.0以上版本),参数的使用方法如下:

@参数名 数据类型 [VARYING] [=内定值] [OUTPUT]

每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQL Server所支持的数据类型都可使用。
[=内定值]相当于我们在建立数据库时设定一个字段的默认值,这里是为这个参数设定默认值。[OUTPUT]是用来指定该参数是既有输入又有输出值的,也就是在调用了这个存储过程时,如果所指定的参数值是我们需要输入的参数,同时也需要在结果中输出的,则该项必须为OUTPUT,而如果只是做输出参数用,可以用CURSOR,同时在使用该参数时,必须指定VARYING和OUTPUT这两个语句。

例子:
CREATE PROCEDURE order_tot_amt @o_id int,@p_tot int output AS
SELECT @p_tot = sum(Unitprice*Quantity)
FROM orderdetails
WHERE ordered=@o_id

例子说明:
该例子是建立一个简单的存储过程order_tot_amt,这个存储过程根据用户输入的定单ID号码(@o_id),由定单明细表(orderdetails)中计算该定单销售总额[单价(Unitprice)*数量(Quantity)],这一金额通过@p_tot这一参数输出给调用这一存储过程的程序

三、在SQL Server中执行存储过程

在SQL Server的查询分析器中,输入以下代码:
declare @tot_amt int
execute order_tot_amt 1,@tot_amt output
select @tot_amt

以上代码是执行order_tot_amt这一存储过程,以计算出定单编号为1的定单销售金额,我们定义@tot_amt为输出参数,用来承接我们所要的结果

四、在ASP中调用存储过程

<!--           必须加载adovbs.inc文件,否则将出错        -->
<!--#include file="adovbs.inc"-->
<%
dim objCnn
dim objCmd
dim Rs
const o_id=112

’-----建立Connection对象----------
set objCnn=Server.CreateObject("Adodb.connection")
objCnn.Open "driver={sql server};server=localhost;uid=sa;pwd=cncanet;database=check;"
’-----建立Command对象-----------
set objCmd=Server.CreateObject("Adodb.Command")
objCmd.ActiveConnection=objCnn
objCmd.CommandText="order_tot_amt" ’指定存储过程名称
objCmd.CommandType=adCmdStoredProc ’其为Stored Procedure
’-----准备stored procedure 的参数-------
objCmd.Parameters.Append _
objCmd.CreateParameter("o_id",adInteger,adParamInput,,o_id)
objCmd.Parameters.Append _
objCmd.CreateParameter("p_tot",adBigInt,adParamOutput,,0)
’-----执行存储过程----------------------
objCmd.Execute

’-----输出参数以及处理结果--------------
for each parm in objCmd.Parameters
Response.Write parm.name &"="& trim(parm) &"<br>"
next
%>

 

-------------------------------------------------

一般用JS检验用户输入的内容是否合法的时候都是用alert("您的输入不合法")此效果来提示用户输入的内容不合法,今天偶尔想到用DHTML里的innerHTML或innertText来提示也是满有个性的一种效果,不妨一用。
测试代码如下:
<script>
function chk(){
   if(document.form1.uname.value=="")
     {uname1.innerHTML="<font color=red>请输入用户名</font>"
     return false;}
   else{
   uname1.innerHTML=""}
  
   if(document.form1.pwd.value=="")
     {pwd1.innerHTML="<font color=red>请输入密码</font>"
      return false;}
   else{
   pwd1.innerHTML=""}
}
 
</script>
<FORM name="form1" METHOD=POST ACTION="test.asp?a=1" onsubmit="return chk()">
用户名:<INPUT TYPE="text" NAME="uname"><span id="uname1"></span><br></br>
密 &nbsp;&nbsp;码:<INPUT TYPE="text" NAME="pwd"><span id="pwd1"></span>
<br><INPUT TYPE="submit" value="提交"></FORM>

Ctrl+A,Ctrl+C,Ctrl+V,运行一下看看效果吧


这个不会弹出JS窗口,也不会到下一页,只是在本页。和csdn登陆效果一样得
------------------------------------------------

一.怎样删除一个表中某个字段重复的列呀,举个例子
表[table1]
id    name
1 aa
2 bb
3 cc
1 aa
2 bb
3 cc
我想最后的表是这样的
id    name
1 aa
2 bb
3 cc
回答:
将记录存到临时表#t中,重复的记录只存一条,然后将临时表#t中的记录再存回原表中,注意“select distinct id,class,name”要包含你需要的所有字段,否则有些字段就被删掉了。
在查询管理器里执行下面代码:
-----------------------------
SELECT DISTINCT id,, name
INTO #t
FROM table1 DELETE table1
          INSERT
        INTO table1
                  SELECT *
                FROM #t
------------------------------
二.找出既会VB又会PHP的人
表是这样的:
ID 员工 技能
1 1 VB
2 1 PHP
3 1 ASP
4 2 PHP
5 3 ASP
6 4 VB
7 4 ASP
要从这张表中找出既会VB又会PHP的人,SQL该怎么写啊?
回答:
---------------------------------------------------------------------------------------------
SELECT 员工 FROM [Table] WHERE 员工 IN(SELECT 员工 FROM [Table] WHERE 技能='VB' ) AND 技能='PHP'
----------------------------------------------------------------------------------------------
三.数据库合并问题
access里的两个表,想让两个表的内容合并

表[a]结构如下:
[id]        编号        自动编号
[name]      名称        文本
[price]     价格        数字
[guige]     规格        文本
[changjia]  生产厂家    文本
[baozhuang] 包装        文本
[danwei]    单位        文本
共有900条记录,除了id和name字段,其他均可以为空

表[b]结构如下:
[id]        编号        自动编号
[name]      名称        文本
[price]     价格        数字
[changjia]  生产厂家    文本
[danwei]    单位        文本
[xingzhi]   性质        文本
共有800条记录,除了id和name字段,比表[a]少几个字段,但还多一个[xingzhi]的字符安其它均可以为空

现在想生成一个新表[c],结构如下,而且内容是两个表的内容之和,
[id]        编号        自动编号
[name]      名称        文本
[price]     价格        数字
[guige]     规格        文本
[changjia]  生产厂家    文本
[baozhuang] 包装        文本
[danwei]    单位        文本
[xingzhi]   性质        文本

用sql语句也可以,手工操作也好,xml也好,别管怎么着吧,怎么实现呀,哥们要郁闷坏了,真要让我们再输入800条记录,我就挂了,
回答:
1.这样
-----------------------------
insert into c(id,name,.....)
select id,name,.....
from a
insert into c(id,name,.....)
select max(id)+1,name,.....
from b
------------------------------
2.更正:
如果直接在查询分析器里执行:
-------------------------------
insert into c(name,.....)
select name,.....
from a
insert into c(name,.....)
select name,.....
from b
--------------------------------
3.用union方法
---------------------------------
insert into [c] ([id] ,编号,自动编号)
select [id],编号,自动编号 from [a]
union
select [id],编号,自动编号 from [b]
-----------------------------------
4.asp的解决办法
------------------------------------------------------------
<% '循环检测a表
Set rs = Server.CreateObect("ADODB.RECORDSET")
      rs.open "select * from a order by id",conn,1,1
      Do while not rs.eof
          Call actAdd(rs("name"))    '调用像b表添加内容的函数!
      rs.MoveNext
      Loop
rs.Close
Set rs = Nothing

Sub actAdd(txt)
Dim ts, sql
sql = "insert into b(name) values('"& txt &"')"
Set ts = Conn.Execute(sql)
      ts.Close
Set ts = Nothing
end Sub
%>
------------------------------------------------------------------
5.asp的解决办法
-----------------------------------------------------------------------------------
<%
dim arr_temp1,arr_temp2,arr_data
set rs=conn.execute("select id,name,price,guige,changjia,baozhuang,danwei from a")
arr_temp1=rs.getrows
rs.close
set rs=nothing

set rs=conn.execute("select id,name,price,guige,changjia,danwei,xingzhi from b")
arr_temp2=rs.getrows
rs.close
set rs=nothing

rem 开始处理
redim arr_data(ubound(arr_temp1,2)+ubound(arr_temp2,2),7)
rem 把两个数组的内容复制进来
这一部分自己写了做两个循环
然后再存进数据库
%>
---------------------------------------------------------------------------------------
最后转一些经典的SQL语句:
1.蛙蛙推荐:一些精妙的SQL语句
-----------------------------------------------------------------------------------------------------------------------
说明:复制表(只复制结构,源表名:a 新表名:b)

SQL: select * into b from a where 1<>1

 

说明:拷贝表(拷贝数据,源表名:a 目标表名:b)

SQL: insert into b(a, b, c) select d,e,f from b;

 

说明:显示文章、提交人和最后回复时间

SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

 

说明:外连接查询(表名1:a 表名2:b)

SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

 

说明:日程安排提前五分钟提醒

SQL:  select * from 日程安排 where datediff('minute',f开始时间,getdate())>5

 

 

说明:两张关联表,删除主表中已经在副表中没有的信息

SQL: 

delete from info where not exists ( select * from infobz where info.infid=infobz.infid )

 

说明:--

SQL: 

SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE

  FROM TABLE1,

    (SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE

        FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND

                FROM TABLE2

              WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X,

            (SELECT NUM, UPD_DATE, STOCK_ONHAND

                FROM TABLE2

              WHERE TO_CHAR(UPD_DATE,'YYYY/MM') =

                    TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') &brvbar;&brvbar; '/01','YYYY/MM/DD') - 1, 'YYYY/MM') ) Y,

        WHERE X.NUM = Y.NUM (+)

          AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <> X.STOCK_ONHAND ) B

WHERE A.NUM = B.NUM

 

说明:--

SQL: 

select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名称='"&strdepartmentname&"' and 专业名称='"&strprofessionname&"' order by 性别,生源地,高考总成绩

 

说明:

从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源)

SQL:

SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS telyear,

      SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01', a.factration)) AS JAN,

      SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02', a.factration)) AS FRI,

      SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03', a.factration)) AS MAR,

      SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04', a.factration)) AS APR,

      SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05', a.factration)) AS MAY,

      SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06', a.factration)) AS JUE,

      SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07', a.factration)) AS JUL,

      SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08', a.factration)) AS AGU,

      SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09', a.factration)) AS SEP,

      SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10', a.factration)) AS OCT,

      SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11', a.factration)) AS NOV,

      SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12', a.factration)) AS DEC

FROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration

        FROM TELFEESTAND a, TELFEE b

        WHERE a.tel = b.telfax) a

GROUP BY a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy')

 

说明:四表联查问题:

SQL: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c  inner join d on a.a=d.d where .....

 

说明:得到表中最小的未使用的ID号

SQL:

SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID

 FROM  Handle

WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)
-----------------------------------------------------------------------------------------------------------------------
2.删除重复数据
-----------------------------------------------------------------------------------------------------------------------
一、具有主键的情况
a.具有唯一性的字段id(为唯一主键)
delete table
where id not in
(
select max(id) from table group by col1,col2,col3...
)
group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,
那么只要col1字段内容相同即表示记录相同。

b.具有联合主键
假设col1+','+col2+','...col5 为联合主键
select * from  table where col1+','+col2+','...col5 in (
  select max(col1+','+col2+','...col5) from table
where having count(*)>1
group by col1,col2,col3,col4
)
group by 子句后跟的字段就是你用来判断重复的条件,
如只有col1,那么只要col1字段内容相同即表示记录相同。

c:判断所有的字段
  select * into #aa from table group by id1,id2,....
  delete table
  insert into table
  select * from #aa

二、没有主键的情况

a:用临时表实现
select identity(int,1,1) as id,* into #temp from ta
delete #temp
where id not in
(
  select max(id) from # group by col1,col2,col3...
)
delete table ta
inset into ta(...)
   select ..... from #temp

b:用改变表结构(加一个唯一字段)来实现
alter table 表 add  newfield int identity(1,1)
delete 表
where newfield not in
(
select min(newfield) from 表 group by 除newfield外的所有字段
)

alter table 表 drop column newfield
-----------------------------------------------------------------------------------------------------------------------


-------------------------------------------------

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1719961次
    • 积分:23969
    • 等级:
    • 排名:第266名
    • 原创:506篇
    • 转载:792篇
    • 译文:0篇
    • 评论:89条
    赞助商
    文章分类
    最新评论
    webdemo演示站