以前在用asp+adodb的时候,这样写:
添加:
rs.open "select * from Users where 1=2",conn,1,3
rs.addnew
rs("UserName") = "abc"
rs("Password") = "123"
rs.update
UsersId = rs("ID")
DefaultRealName = rs("RealName")
rs.close
修改:
rs.open "select * from Users where ID = 1",conn,1,3
if not rs.eof then
 rs("UserName") = "aaa"
 rs.update
 UsersId = rs("ID")
 RealName = rs("RealName")
end if在C#+ADO.net后,我只知道可以执行sql,那么如果insert也是执行sql,那么咋么返回被新添加上去的行的其他列(未指定值的列:自动编号、带默认值的列等)的值呢?

解决方案 »

  1.   

    你可以看看DataReader和DataCommand,MSDN里面有代码
      

  2.   

    private static void ReadOrderData(string connectionString)
    {
        string queryString =
            "SELECT OrderID, CustomerID FROM dbo.Orders;";    using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            SqlCommand command =
                new SqlCommand(queryString, connection);
            connection.Open();        SqlDataReader reader = command.ExecuteReader();        while (reader.Read())
            {
                Console.WriteLine(String.Format("{0}, {1}",
                    reader[0], reader[1]));
    //也可以用reader["OrderID"]这样的
            }        reader.Close();
        }
    }
      

  3.   

    是SqlCommand和SqlDataReader,2楼写错了
      

  4.   

    我的意思是,比如表[Users]字段列表如下:
    ID:int 主键、自动编号
    UserName:Varchar(20) 不可为空,无默认值
    Password:Varchar(20) 不可为空,无默认值
    RealName:Varchar(20) 可为空,默认值为"无名"
    -----------------
    那么在添加的时候,我希望是这样:提供UserName、Password的值,然后调用添加函数,添加函数添加成功后,返回一个对象表示添加出来的这一行
    比如这个对象是一个object[],它应该是{1,"传入的用户名","传入的密码","无名"}在修改的时候,我希望是这样,提供主键ID的值,比如我要修改ID=3的行,那么我想先open这一行,然后选择我需要修改的某一个或者多个字段,然后update
      

  5.   

    http://topic.csdn.net/t/20030602/17/1866860.html
    注意看5楼的   用@@IDENTITY   
      

  6.   


    我这里是打个比方,如果我Users表没有ID字段怎么办?
    有没有什么sql语句可以选择出新添的这一行,比如insert触发器,可以select * from inserted
      

  7.   

    你的情况存在一个批处理的问题,要不你加一个时间列,保存插入的时间,精确一点,然后通过@@rowcount获取受影响的行数,然后,通过时间列倒序,提取@@rowcount行数据。不知道可不可以。
      

  8.   

    我试着用SqlDataAdapter的update去做,发现,我新添的Row,在update后,系统没有添加记录操作得到的主键,和其他的一些带默认值的数据给取回来,比方:
    原先有3条,我添加一条,只填Ur_UserName和Ur_Password的值,DataTable如下:
    Ur_ID Ur_UserName Ur_Password Ur_OrganID
    1     张三          123         1
    2     李四          xxx         1
    3     王二         123         1
          李逵         123然后update,数据库sqlServer内容如下:
    Ur_ID Ur_UserName Ur_Password Ur_OrganID
    1     张三          123         1
    2     李四          xxx         1
    3     王二          123         1
    4     李逵          123         1这个正确的,可是内存里面的DataTable没有像这个一样,而是和添加前的一致:
    Ur_ID Ur_UserName Ur_Password Ur_OrganID
    1     张三          123         1
    2     李四          xxx         1
    3     王二          123         1
          李逵          123
    Ur_ID的4(Sqlserver自动编号),以及Ur_OrganID的1(字段默认值),都没有反应到内存里面的DataTable中!!!