我想从具有给定值的数据库表中获取所有条目(例如:UserType
值为1)。
我想要发生的是将所有用户1
作为UserType
,然后将其存储,然后将其插入到另一个表中。
应使用UserID
将已处理的用户插入另一个表中。我想首先选择用户,然后使用循环将它们输入到表中,但我不知道如何。
以下是我将用户插入另一个表格时使用的示例代码。
con.Open();
SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandText = "INSERT INTO Messages VALUES (@MessageTo, @Subject)";
com.Parameters.Add("@MessageTo", SqlDbType.Int);
com.Parameters.Add("@Subject", SqlDbType.NVarChar);
com.Parameters[0].Value = //this is where the userIDs of the users selected should be entered
com.Parameters[1].Value = "test";
com.ExecuteNonQuery();
con.Close();
答案 0 :(得分:0)
首先,这将是Entity Framework的3-4行答案。这很好,做了所有的事情。当你真正擅长制作自己的sql命令时,请试一试。
所以,我们假设您已经以这种方式创建了代码(伪代码):
public class User // a class for holding details about a user
{
public int UserID {get;set;}
//others
}
// a list holding the users you want to insert
List<User> usersToInsert = new List<User>();
// get the users in some way
usersToInsert = TheSelectStatementToGetUsersToInsert();
现在,您需要逐个将这些用户插入数据库。在foreach
上使用usersToInsert
循环。
foreach (var user in usersToInsert)
{
con.Open();
SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandText = "INSERT INTO Messages VALUES (@MessageTo, @Subject)";
com.Parameters.Add("@MessageTo", SqlDbType.Int);
com.Parameters.Add("@Subject", SqlDbType.NVarChar);
// this is where you use the iterator variable
com.Parameters[0].Value = user.UserID;
com.Parameters[1].Value = "test";
com.ExecuteNonQuery();
con.Close();
}
查看SqlCommand
和SqlConnection
变量的having using
statements也很不错。他们将始终关闭连接,因此您不必记住。