本帖最后由 hetengfei_ 于 2011-10-16 14:59:28 编辑

解决方案 »

  1.   

    id是递增的,那你插完就取出最大的id就是刚才那条记录的id了啊
    select max(id) from [dbo].[T_FileSave]
    这样就可以获取想要的id
      

  2.   

    你的方法不对。
    并发问题啊,
    一个用户,查子最大id
    二个用户,查了最大id,
    因为查询和Insert 是不在同个SQL语句中,甚至不在一个请求内,更何况是互联网这样的东东,
    更有可能发出一个请求,1秒多钟以后服务器才应答,更可能服务器响应中断。
    如果是请求到响应1秒钟,你能保证在一秒钟内没有其它用户不插入数据库吗?
      

  3.   

    INSERT INTO [dbo].[T_FileSave] ([FUpFileName], [FSaveFileName], [FPath], [FFileType])  
     VALUES (@FUpFileName, @FUpFileName, @FPath, @FFileType);
    select @@IDENTITY存诸过程改为如上
      

  4.   

    long CenterId = fsAdapter.InsertValueGetId(ful.FileName, "", Server.MapPath(@"~/UpLoadFile/Images/"), "Image");
    求救!!!
    为什么每次都是 CenterId ==1 啊,
    加上select @@IDENTITY好象没有效果,
    每都是返回受影响行数啊,
      

  5.   

    加上select @@IDENTITY,执行sql用的是ExecuteScalar而非ExecuteNonQuery哦,要注意
      

  6.   

    谢谢了,又学会一招!
    我是在添加SQL 语句时
    选择 SELECT 返回单个值,

    结果它返回给我一个Object
     我再用TryParse 搞定了!object ObjCenterId = fsAdapter.InsertSelectId(ful.FileName, "", Server.MapPath(@"~/UpLoadFile/Images/"), "Image");
    long CenterId;
    long.TryParse(ObjCenterId.ToString(), out CenterId);