what database are you using? If you are using SQL Server, what are you doing with newid()? is that a random field? show your table definition, or trySqlCommand cmd = new SqlComment("insert into table1 values(newid(),'asddd',18);select @@identity as idnam", conn);
conn.Open();
int id = (int)cmd.ExecuteScalar();
conn.Close();

解决方案 »

  1.   

    先执行
    select newid() as idname
    取得结果如strid后再执行
    insert into table1 values (strid, 'asddd',18)
      

  2.   

    string selectStr = select IDENT_CURRENT('表名') From 表名;
    OleDbCommand cmd = new OleDbCommand(selectStr,Ole_Con);
    Ole_Con.Open();
     int ID =cmd.ExecuteScalar(); 
    Ole_Con.Close();ID 得到的是已经产生的最大的一个,下一个ID = ID+1;
    我也碰到了这个问题,我也是才解决的。
    Sql server 2000好用,别的不清楚!
    我的email : [email protected] 不懂得地方在同我联系
      

  3.   

    int ID = (int)cmd.ExecuteScalar();不好意思;
      

  4.   

    我用的是sqlserver2000,
    id   : uniqueidentifier
    name : varchar(50)
    pwd  : int 
    id为主键,insert的时候必须newid()自动生成
    看思归老大的好像可以,
    不过int值应该是string
    我试试看
      

  5.   

    搞定了,还是 panyee(快乐王子) 的方法行的通
    虽然笨是笨一点,也比没有办法好
    谢了
    一个很笨的方法
    SqlConnection sqlcon = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
    SqlDataAdapter dap = new SqlDataAdapter("select newid() as idname",sqlcon);
    DataSet dataset = new DataSet();
    dap.Fill(dataset);
    SqlCommand command = new SqlCommand("insert into table1 select '"+dataset.Tables[0].Rows[0]["idname"].ToString()+"','dddd',19",sqlcon);
    sqlcon.Open();
    int returnstring = command.ExecuteNonQuery();
    sqlcon.Close();
    还是希望有更好的实现办法
    期待。