检索所选用户并将其存储到另一个表中

时间:2013-11-17 12:51:14

标签: c# sql insert

我想从具有给定值的数据库表中获取所有条目(例如: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();

1 个答案:

答案 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();
}    

查看SqlCommandSqlConnection变量的having using statements也很不错。他们将始终关闭连接,因此您不必记住。