SQL Server 2000中,有三个比较类似的功能:他们分别是:SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY,它们都返回插入到 IDENTITY 列中的值。

IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。
@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值

SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。


例如,有两个表 T1 和 T2,在 T1 上定义了一个 INSERT 触发器。当将某行插入 T1 时,触发器被激发,并在 T2 中插入一行。此例说明了两个作用域:一个是在 T1 上的插入,另一个是作为触发器的结果在 T2 上的插入。


假设 T1 和 T2 都有 IDENTITY 列,@@IDENTITY 和 SCOPE_IDENTITY 将在 T1 上的 INSERT 语句的最后返回不同的值。


@@IDENTITY 返回插入到当前会话中任何作用域内的最后一个 IDENTITY 列值,该值是插入 T2 中的值。


SCOPE_IDENTITY() 返回插入 T1 中的 IDENTITY 值,该值是发生在相同作用域中的最后一个 INSERT。如果在作用域中发生插入语句到标识列之前唤醒调用 SCOPE_IDENTITY() 函数,则该函数将返回 NULL 值。


而IDENT_CURRENT('T1') 和 IDENT_CURRENT('T2') 返回的值分别是这两个表最后自增的值。

posted @ 2008-08-18 01:50 LuckStar 阅读(76) | 评论 (0)编辑

ASP+SQL Server 2000

1.要获取的ID值字段属性必须设为:自动编号(我们假设字段名为recordID)
2.添加记录代码模式:

Cn.Execute"INSERT INTO table(field1,field2,...) VALUES("field1Value","field2Value",...)"

3.得到ID值
Set Rss = Cn.Execute("SELECT SCOPE_IDENTITY() as newIDValue FROM table")
'Rs.Open sqlStr,Cn,3,1
newID = Rss("newIDValue")

4.newID为刚添加的记录的ID值
5.附上取得ID值的三种方式:
/* 对于想要得到一个表中的最后一个插入操作所产生的ID的最好用IDENT_CURRENT('TBName')*/
INSERT INTO table(field1,field2,...) VALUES("field1Value","field2Value",...) 
SELECT IDENT_CURRENT('recordID') as newIDValue
/*对于马上使用的刚才插入的新记录ID用SCOPE_IDENTITY()是最合适的*/
INSERT INTO table(field1,field2,...) VALUES("field1Value","field2Value",...)
 SELECT SCOPE_IDENTITY() as newIDValue
/*对于想要得到一系列的操作中最后得到的那个自增的ID最好用@@IDENTITY*/
INSERT INTO table(field1,field2,...) VALUES("field1Value","field2Value",...) 
SELECT @@IDENTITY as newIDValue


以上三种方式在SQL Server2000的查询分析器里测试成功,如果要用到网页代码里,请根据上面的例子修改。

 

 

posted @ 2008-08-18 01:49 LuckStar 阅读(49) | 评论 (0)编辑
数据库Temp中有一表:
Admin结构如下:
AdminName varchar(10)
AdminPass  varchar(15)
内容:
AdminName   admin
AdminPass    admin
新建存储过程:
create procedure Login
@AdminN varchar(10),
@AdminP varchar(15),
@Out int output
as
--定义一个临时存储密码的变量
declare @Pwd varchar(15)
begin
  select @Pwd=adminPass where AdminName=@AdminN
  if @AdminP=@Pwd 
  begin
     set @Out=1
 end
 else
    set @Out=0
end
go
c#文件调用如下:

 SqlConnection sqlcon = new SqlConnection("server=.;uid=sa;pwd=;database=Temp");
        SqlCommand sqlcmd = new SqlCommand();
        sqlcmd.Connection = sqlcon;
        sqlcmd.CommandType = CommandType.StoredProcedure;
        sqlcmd.CommandText = "LuckyStarLogin";
        sqlcmd.Parameters.Add("@AdminN", SqlDbType.VarChar).Value = "admin";
        sqlcmd.Parameters.Add("@AdminP", SqlDbType.VarChar).Value = "admin";
        SqlParameter sp = sqlcmd.Parameters.Add("@Out", SqlDbType.Int);
        sp.Direction = ParameterDirection.Output;
        sqlcon.Open();

        sqlcmd.ExecuteNonQuery();
        if (Convert.ToInt32(sp.Value )== 1)
        {
            Response.Write("登陆成功");
        }
        else
        {
            Response.Write("登陆失败");
        }

posted @ 2008-04-13 21:38 LuckStar 阅读(24) | 评论 (0)编辑
SQLStructrued Query Language的缩写,即结构化查询语言。它是负责与ANSI(美国国家标准学会)维护的数据库交互的标准。作为关系数据库的标准语言,它已被众多商用DBMS产品所采用, 使得它已成为关系数据库领域中一个主流语言,不仅包含数据查询功能,还包括插入、删除、更新和数据定义功能.
接下来说一下T-SQL语言:
    T-SQLSQL语言的一种版本,且只能在SQL SERVER上使用。它是ANSI SQL的加强版语言、提供了标准的SQL命令。另外,T-SQL还对SQL做了许多补允,提供了类似CBasicPascal的基本功能,如变量说明、流控制语言、功能函数等。
posted @ 2008-04-13 21:04 LuckStar 阅读(53) | 评论 (0)编辑
标签 'http' 已声明。标签名称在批查询或存储过程内部必须唯一。

解决办法:将单引号Replace掉
xx.Replace("'", "''")
posted @ 2008-04-09 09:46 LuckStar 阅读(56) | 评论 (0)编辑

错误1069是一个Windows NT/2000的系统错误。错误1069表明服务不能被启动(当启动服务时返回“登录失败”错误)。例如,当启动MSSQLServer服务时,得到如下错误提示:

发生错误1069:由于登录失败而无法启动服务
此时正在MSSQLServer服务上执行该服务操作

如果服务被一个没有“登录服务”权限的帐户所启动时会发生1069错误。解决该问题的方法是给予该帐户以“登录服务”权限。
具体到MSSQLServer的问题,如果在安装在Windows XP上安装SQL Server 2000开发版,并选择了默认设置(仅Windows的身份验证方式,默认实例,用Windows的Administrator用户进行的安装等),一般会发生上述问题。解决的方法会有很多种,但最简单的方法是:
依次打开Windows控制面版->管理工具->服务->MSSQLSERVER->属性->登录,将登录身份改为本地系统帐户

posted @ 2008-04-07 17:13 LuckStar 阅读(385) | 评论 (6)编辑
 
Response.Cookies("user_name").Expires=Date+1 '指定cookie保存时间

保留COOKIES一个小时
Response.Cookies("MyCookie").Expires= (now()+1/24)

Response.Cookies("MyCookie").Expires = DateAdd("h", 1, Now())


Response.Cookies("CookieName").Expires=DateAdd("m",60,now())
设置60个月以后过期

Response.Cookies("User").expires=second()+7
在expires后面定义的时间可以用时间函数代替
例如:date()+7就表示在今天的时间上加上7天,而second()+7则是7秒了。

Response.Cookies("字段名").expires=时间函数+N,例如:
Response.Cookies("name2").expires=date+1,表示Cookies保存1天,再比如:
Response.Cookies("name2").expires=Hour+8,表示Cookies保存8小时。
这种方法我测试过不行(在2003server,iis6.0中),不管second后面有无加(),访问时会出现500错误(还是无法显示网页?忘了)。


织梦尤文:这里的时间累加建议还是使用DateAdd函数,比如我们要累加一小时,则使用:
Response.Cookies("baidooglecom").expires = DateAdd("h", 1, Now())

30分钟:
Response.Cookies("CookieName").Expires=DateAdd("n",30,now())

dateadd("S",30,now()) 得到秒


Expires 指定 cookie 的过期日期。为了在会话结束后将 cookie 存储在客户端磁盘上,或在许多时候,我们希望能更长时间地在访问者的计算机上保存cookie。必须设置该日期。
若此项属性的设置未超过当前日期,则在任务结束后 cookie 将到期。
cookie的使用到期时间为“2010年1月1日”: Response.Cookies("CookieName").Expires=#January 01, 2010#
cookie的过期时间为“cookie的创建时间+365天”:Response.Cookies("CookieName").Expires=Date+365 推荐的
但最好不要随便写 Response.Cookies("CookieName").Expires=Date,这样页面之间的调用时值会为空。
posted @ 2008-04-03 10:51 LuckStar 阅读(684) | 评论 (1)编辑
DataList动态添加模版,首先建立两个模版,例a.ascx,b.ascx
a.ascx内容:

<%@ Language = "C#" %>

<%# "<b>" +
    DataBinder.Eval(((DataListItem)Container).DataItem, "LastName") +
    "</b>, " +
    DataBinder.Eval(((DataListItem)Container).DataItem, "FirstName")
%>

b.ascx


<%# "<b>" +
    DataBinder.Eval(((DataListItem)Container).DataItem, "FirstName") +
    "</b>, " +
    DataBinder.Eval(((DataListItem)Container).DataItem, "LastName")
%>

在Default.aspx中有
<asp:DataList run="server" id="Show"></asp:DataList>
在Default.aspx.cs中
protected void Page_Load(object sender,EventArgs e)
{
this.Show.ItemTemplate = Page.LoadTemplate("a.ascx");
}
这样调用就可!
posted @ 2008-04-01 22:58 LuckStar 阅读(108) | 评论 (0)编辑
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

class DataList分页
...{
    
protected void Page_Load(object sender, EventArgs e)
    
...{
        
if (!Page.IsPostBack)
        
...{
             FillData();
         }

     }

    
static PagedDataSource Pds;
    
void FillData()
    
...{
         SqlConnection Conn
= new SqlConnection("Data Source=192.168.1.30;database=Ticket_Info_Data;UID=sa;Password=sa;Persist Security Info=True;");
         Conn.Open();
         SqlDataAdapter Sda
= new SqlDataAdapter("select * from DomesticFlight", Conn);
         DataSet Ds
= new DataSet();
         Sda.Fill(Ds);
         Pds
= new PagedDataSource();
         Pds.DataSource
= Ds.Tables[0].DefaultView;
         Pds.AllowPaging
= true;
         Pds.PageSize
= 6;
        
this.DataList1.DataSource = Pds;
        
this.DataList1.DataBind();
         Conn.Close();
     }

//下一页
    protected void LinkButton2_Click(object sender, EventArgs e)
    
...{
         Pds.CurrentPageIndex
++;
        
this.DataList1.DataSource = Pds;
        
this.DataList1.DataBind();
     }

//上一页
    protected void LinkButton1_Click(object sender, EventArgs e)
    
...{
         Pds.CurrentPageIndex
--;
        
this.DataList1.DataSource = Pds;
        
this.DataList1.DataBind();
     }

}

posted @ 2008-04-01 21:46 LuckStar 阅读(26) | 评论 (0)编辑
1.使用 XSL 样式表无法查看 XML 输入
在c:\windows\microsoft.net\framework\v2.050727(路径根据实际情况)
下运行aspnet_regiis /i即可
posted @ 2008-03-30 13:25 LuckStar 阅读(595) | 评论 (0)编辑