使用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知识非常有限!)
谢谢,关于这篇文章我很抱歉。
这应该完全在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