使用ADO.NET连接数据库,数据库有两个表,table1和table2,其中table1的ID字段和table2的UseID字段关联(table2有三个字段ID(自增),useid,city)。
我在添加数据的时候会将数据添加到两个表中,这时有个问题,当我使用语句strsql = "Insert into table2(city) Values('"+Textbox.Text.ToString()+"')"添加数据时,会报错,错误原因是table2的useid字段不能为空,已知table2的useid字段等于table1的ID(自增)字段,那插入的sql语句该怎么写呢??????

解决方案 »

  1.   


    SELECT UseID = SCOPE_IDENTITY()
      

  2.   

    你可以先根据table1中的一个字段值搜出来id(int i=select id  from 表 where 字段名=字段的值
    然后在insert into table2(city,userid)values('"+Textbox.Text.ToString()+"',i)
      

  3.   

    那要看你使用的是什么数据库了,如果上面的方法数据库不支持的话,只能先从table1中读取出刚新增的那个ID,然后再向table2中增加了
      

  4.   

    你在新增table2时,table1中的用户不是新增吧
    如果不是,找到改用户id填进去
    如果是,那先新增table1,然后select @@identity
    将得到的值填到table2的userid
      

  5.   

    table1的字段:ID, name,Address Phone
    table2的字段:ID,useid, city
    在gridview中显示name address phone city四个字段
    同时在添加时只会添加name address phone city,这样就有一个问题,table1和table2的ID都是自增的,但useid没有数据,只有通过table1的ID得到(这两个数相同)。那么sql语句该怎么写???
      

  6.   

    我是这样写的:strsql ="Insert into table1(name,address,phone) Values('...','...','...')";
    cmd.CommandText = strsql;
    cmd.ExecuteNonQuery();
    str2 = "Select @useid = SCOPE_Identity() Insert into table2(useid,city) Values('"+@useid+"','...')";
    cmd.CommandText = str2 ;
    cmd.ExecuteNonQuery();
    提示必须声明标量变量@useid问题出在哪呢?
      

  7.   

    insert时候把那个自增的id取出来,再插到另一个表.
    select SCOPY_IDENTITY()取就ok了
      

  8.   

    直接在建表的时候就给它的一个IDENTITY属性设为为yes 好像是这样的
      

  9.   

    还是不明白
    SQL code
    SELECT UseID = SCOPE_IDENTITY() 这句话?
    我是这样写的:strsql ="Insert into table1(name,address,phone) Values('...','...','...')";
    cmd.CommandText = strsql;
    cmd.ExecuteNonQuery();
    str2 = "Select @useid = SCOPE_Identity() Insert into table2(useid,city) Values('"+@useid+"','...')";
    cmd.CommandText = str2 ;
    cmd.ExecuteNonQuery();
    提示必须声明标量变量@useid问题出在哪呢?
      

  10.   

    这个里面 用  select @@identity   是不行的 
    要用那个 SCOPE_IDENTITY()SCOPE_IDENTITY() 将返回在 Table1 中插入的 IDENTITY 值