以前在用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,那么咋么返回被新添加上去的行的其他列(未指定值的列:自动编号、带默认值的列等)的值呢?
添加:
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,那么咋么返回被新添加上去的行的其他列(未指定值的列:自动编号、带默认值的列等)的值呢?
{
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();
}
}
ID:int 主键、自动编号
UserName:Varchar(20) 不可为空,无默认值
Password:Varchar(20) 不可为空,无默认值
RealName:Varchar(20) 可为空,默认值为"无名"
-----------------
那么在添加的时候,我希望是这样:提供UserName、Password的值,然后调用添加函数,添加函数添加成功后,返回一个对象表示添加出来的这一行
比如这个对象是一个object[],它应该是{1,"传入的用户名","传入的密码","无名"}在修改的时候,我希望是这样,提供主键ID的值,比如我要修改ID=3的行,那么我想先open这一行,然后选择我需要修改的某一个或者多个字段,然后update
注意看5楼的 用@@IDENTITY
我这里是打个比方,如果我Users表没有ID字段怎么办?
有没有什么sql语句可以选择出新添的这一行,比如insert触发器,可以select * from inserted
原先有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中!!!