这是我用在论坛或者发表文章时候用的.假设我的论坛有主题,与贴子,主题呢就是显示所有问题主题的例表,而贴子就是存放所有问题,
主题表为 topic  有 id 自动编号  title   
贴子表为publish  id自动编号 rootid主题ID号 title
当我发表一个新的贴子的时候.就在topic里面添加了一个新的记录,此时自动编号ID值就会有一个值,我想在topic添加完一个记录后,ID自动生成的值,返回来,,然后再在publish里面添加新的记录,而且rootid就是topic自动生成ID的值,,,有谁可以告诉我怎么样做吗.如何可以取得返回的ID值,,给出详细的代码或者例子,谢谢了..方法可以用在access或者是mssql也行的.谢谢各位大侠了

解决方案 »

  1.   

    有啊有啊,而且有2个方法
    第一个:
    在SQL中可以用@IDENTITY来获取SQL服务器前一次自动生成的UnixxxIdentity值
    如:
    SELECT @IDENTITY
    (注意:如果访问SQL的用户多,也许不能得到正确的值;家里没有SQL帮助,上面的关键字也许不对)第二个:
    首先,让SQL为你生成一个ID,把它保存起来
    SELECT newid()
    然后,把刚才得到的ID加到INSERT INTO语句的字段列表和值列表中.
    INSERT INTO Topic (id,title) VALUES (ID,TITLE)
    INSERT INTO publish  (rootid,title) VALUES (ID,TITLE)
      

  2.   

    ..
    rs.addnew
    rs("name")="testname"
    rs("othercol")="othercol"
    rs.update
    newid=rs("id")
    rs.close
    ...
    newid就是记录的ID
      

  3.   

    先添加在TOPIC表里面,然后读取出TOPIC自动生成的ID值再把该值存到ROOTID里面去啊,
    xrwang(无涯) ( )  你可以说详细点吗?
    老大们,我这个问题问很久了,没有人给我答复吗
      

  4.   

    SqlCommand cmd=new SqlCommand();
    //初始化cmd
    //执行将数据添加在TOPIC表里面的操作
    //下面2句获取系统生成的ID
    cmd.CommandText="SELECT @IDENTITY";
    System.Guid newid=(System.Guid)SqlCommand.ExecuteScalar();  //注意,为了简便,这里没有异常处理
    //这里再添加数据到publish
    /...
      

  5.   

    我写的@IDENTITY这个关键词也许不对,你自己去看看SQL联机帮助.
    我家里没有安装SQL.
      

  6.   

    在SQL里面我试过了,可以,但是在ACCESS中就是不能,我晕倒了
      

  7.   

    ACCESS当然不行了,ACCESS里面你可以这样.
    (注意:ACCESS里的自动编号字段总是不断增加的)
    OleDbCommand cmd=new OleDbCommand();
    //初始化cmd
    //执行将数据添加在TOPIC表里面的操作
    //下面2句获取系统生成的ID
    cmd.CommandText="SELECT TOP 1 [id] FROM Topic ORDER BY [id] DESC";
    int newid=(int)cmd.ExecuteScalar();  //注意,为了简便,这里没有异常处理
    //这里再添加数据到publish
    /...