我是想提交次条信息后,再根据提交的内容取出此条信息,,,但是这样是不是太…………——那个了。,,,,
  有没更好点的办法,,,,
  请教各位。

解决方案 »

  1.   

    试试如下语句:string strSql = @"
    INSERT INTO MyTable VALUES (22, 11)
    SELECT @@IDENTITY
    ";
      

  2.   

    access没办法 只有再次查询刚才的这个 
    select top 1 id from table order by id descorselect max(id) from xxxxx
      

  3.   

    我刚才试了一下, 可以对 Access 数据库执行 "SELECT @@IDENTITY" 语句.
      

  4.   

    开什么玩笑?
    Access 能够同时执行2条sql语句?
      

  5.   

    SELECT @@IDENTITY你查出来的也是0
    没有意义
      

  6.   

    using System.Data.OleDb;class Test
    {
      static void Main()
      {
        string   strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:\tmp\P.mdb";
        OleDbCommand cmd = new OleDbCommand();
        cmd.Connection   = new OleDbConnection(strConn);
        cmd.Connection.Open();
        for (int i = 0; i < 3; i++)
        {
          cmd.CommandText = "INSERT INTO MyTable (N1,N2) VALUES (22,11)";
          cmd.ExecuteNonQuery();
          cmd.CommandText = "SELECT @@IDENTITY";
          int n = (int)cmd.ExecuteScalar();
          System.Console.WriteLine(n);
        }
        cmd.Connection.Close();
      }
    }/*
    在 Access 数据库 P.mdb 中建一个表 MyTable,有3个字段:
    id, 自动编号
    N1, 长整型
    N2, 长整型然后执行上述程序,第一次运行时输出:
    1
    2
    3第二次再运行,输出:
    4
    5
    6用 Access 查看 MyTable 表,发现增加了6行记录,证实了上述程序的作用.
    */
      

  7.   

    开什么玩笑?
    Access 能够同时执行2条sql语句?
    ------------------------------------可以同时执行N条语句,象下面这样就可以了:cmd.CommandText = "INSERT INTO MyTable (N1,N2) VALUES (22,11)";
    cmd.ExecuteNonQuery();
    cmd.CommandText = "SELECT @@IDENTITY";
    int n = (int)cmd.ExecuteScalar();
    System.Console.WriteLine(n);
      

  8.   

    你这个2条同时执行??你这个是在没有关闭连接的情况下执行2次查询如果没有关闭的话 
    可以使用SELECT @@IDENTITY那跟那个直接查询 select max(id)有什么区别?
      

  9.   

    如果没有关闭的话
    可以使用 SELECT @@IDENTITY
    那跟那个直接查询 select max(id)有什么区别?
    --------------------------------------------无论如何,使用系统提供的 SELECT @@IDENTITY, 一定会比 SELECT MAX(id)高效, 因为系统肯定知道最后插入的一条记录的 IDENTITY, 比从一个表中去查找 MAX(id) 好得多(想象一下, 如果表中有几万条记录的情况).既然有 SELECT @@IDENTITY 可用, 为什么不用? 系统变量 @@IDENTITY 设计出来就是作这个用途的. 难道楼上的在 SQL Server 2000 数据库中也不使用 SELECT @@IDENTITY 而宁愿用 SELECT MAX(id) 吗? 难道 Access 中的系统变量 @@IDENTITY 就不如 SQL Server 2000 的同名变量吗?
      

  10.   

    select top 1 id from table order by id desc
    那这句呢?
    他说的的是Access当然你的也可以用
    看个人喜好
      

  11.   

    开什么玩笑?
    Access 能够同时执行2条sql语句?你这个2条同时执行??
    ------------------------------------如果是 SQL Server 2000, 你在 C# 程序中使用 System.Data.SqlClient.SqlConnection, 不是也是按我这种方法在不关闭连接的情况下同时执行两条 SQL 查询, 以获得 @@IDENTITY 吗? 难道你还有更高明的方法在 C# 程序中获得 SQL Server 2000 的 @@IDENTITY 吗? 请指教.
      

  12.   

    无论如何, SELECT @@IDENTITY 直接查询系统变量, 一定会比 select top 1 id from table order by id desc 之类从表中查询数据的方法来得高效. 系统变量 @@IDENTITY 的意义也就在于在刚执行完插入语句后不用再次查询表而获得最后一次的自动标识.
      

  13.   

    access没办法 只有再次查询刚才的这个 
    select top 1 id from table order by id descorselect max(id) from xxxxx
    ----------------------------------------不好意思, 我是就事论事, 对事不对人.我看你上面的话, 意思好象是 "access没办法, SQL Server 2000 有办法, @@IDENTITY" (不知我有没有猜错你的意思?) 然后我经过试验, 得出的结论是, 在 @@IDENTITY 这点上, Access 不比 SQL Server 2000 差, 所以我才啰嗦了一大堆, 不好意思, 见笑了. :)如果我理解错了你的意思, 在这里向你道歉了.
      

  14.   

    Sql 2000 可以同时执行 1条以上的语句可以把 insert..... ; SELECT @@IDENTITY 
    放到一起作为 CommandText 也可以加上 Set Nocount on  和 Set Nocount off
    这样就可以返回 一个int值
    也可以使用存储过程 这样更好 Access也可以执行SELECT @@IDENTITY  但是需要再次查询一次
      

  15.   

    Sql 2000 可以同时执行 1条以上的语句
    可以把 insert..... ; SELECT @@IDENTITY 
    放到一起作为 CommandText 
    ---------------------------------------这点以前没想到, 学习了.
      

  16.   

    板凳子来了,看热闹.
    可以使用全局变量@@IDENTITY来解决问题.