使用SQLDataReader在表中插入多行

本文关键字:插入 SQLDataReader 使用 | 更新日期: 2023-09-27 18:07:43

我可能用错了方法,但是这里是:

我开始在SQL服务器,包括ASP登录功能俱乐部数据库。我已经在电子表格中获得了所有成员的详细信息,并且正在尝试将每个俱乐部成员导入数据库,并使用他们自己的登录。

我已经将电子表格导入到一个名为Historical$的表中,并使用Peter Kellner的会员资格编辑器在我的数据库中设置ASP会员资格表。工作好了!

因此,我有我所有的俱乐部"成员"作为ASP会员与他们自己的登录详细信息,但现在想把他们所有的信息(地址,性别等)在一个表中,使用从ASP会员表的UniqueIdentifier"UserId"作为外键。

简而言之,我想将源表(Historical$)中的选定字段+ aspnet_Membership表中的相应UserId导入到一个名为"Club_Member"的空表中。如果可能的话,我更愿意使用我已经在Club_member中拥有的结构。

源表历史$:

Mem_no  
Firstname  
Lastname  
email1  
...  
源表aspnet_Membership:
...  
UserId  
...  
Email  
...

目标表Club_Member:

UserId  
Firstname  
Lastname  
Email  
...

我认为最好的方法是使用SQLDataReader来选择具有表连接的字段,读取结果中的每一行并插入到新表中,但是在计算插入到新表中的逻辑和语法时遇到麻烦。
c#代码:

protected void ButtonTransfer_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(connectionString);
        string strSQL1 = "Select Historical$.memnum, Historical$.first, Historical$.last, aspnet_Membership.UserId FROM aspnet_Membership INNER JOIN Historical$ ON aspnet_Membership.Email = Historical$.email1";
       con.Open();
         SqlCommand myCommand = new SqlCommand(strSQL1, con);
        SqlDataReader TransReader;
        TransReader= myCommand.ExecuteReader();
        while (TransReader.Read())
        {
            SqlDataSource1.Insert();
        }
    }  
ASP代码:

        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:wtcConnectionString %>" 
        InsertCommand="INSERT INTO member(UserId, mem_number, mem_fname, mem_lname) VALUES (@UserId, @memnum, @first, @last)">
        <InsertParameters>
            <asp:Parameter Name="UserId" />
            <asp:Parameter Name="memnum" />
            <asp:Parameter Name="first" />
            <asp:Parameter Name="last" />
        </InsertParameters>
    </asp:SqlDataSource>        

我得到错误:不能插入值NULL到列'UserId',表Club_Member;列不允许为空。插入失败。

第一个问题是,我走对了吗,还是有更好的方法?
其次,可能导致错误的原因是什么?我不介意有人想出一个更简单的方法,因为这应该是"一次性的",但我不知道如何去做!(顺便说一句ASP。. net/c#知识有限,SQL知识非常有限!)

谢谢,关于这篇文章我很抱歉。

使用SQLDataReader在表中插入多行

这应该完全在SQL中完成,使用INSERT语句,如:

INSERT Club_Member (UserID, Firstname, Lastname, Email....)
SELECT m.UserID, c.FirstName, c.LastName, c.Email1
FROM aspnet_membership m
JOIN [Historical$] c on m.EMail = c.Email1