Я, вероятно, иду по этому пути неправильно, но здесь идет речь:
Я запускаю клубную базу данных на сервере SQL, которая включает в себя функцию входа в ASP.Мне предоставили все данные членов в электронной таблице, и я пытаюсь импортировать каждого члена Клуба в базу данных с их собственным логином.
Я импортировал электронную таблицу в таблицу под названием Historical $ и использовал Питер Келлнер. Редактор членства для настройки таблиц членства ASP в моей базе данных.Отлично работает!
Поэтому у меня есть все члены моего клуба в качестве члена ASP с их собственными данными для входа в систему, но теперь я хочу поместить всю свою информацию (адрес, пол и т. Д.) В таблицу, которая использует уникальный идентификатор пользователя "UniqueIdentifier""из таблиц членства ASP в качестве внешнего ключа.
Короче говоря, я хочу импортировать выбранные поля из моей исходной таблицы (Historical $) + соответствующий идентификатор пользователя из таблицы aspnet_Membership в пустую таблицу с именем" Club_Member ".Я бы предпочел использовать структуру, которая у меня уже есть в Club_member, если это возможно.
Исходная таблица Historical $:
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;столбец не допускает пустых значений.INSERT терпит неудачу.
Первый вопрос: я на правильном пути или есть лучший способ?
Во-вторых, что может быть причиной ошибки?Я не против, если кто-то придумает более легкий путь, потому что это должно быть «одноразовым», но я не понимаю, как это сделать!(Кстати, знания ASP.NET/C# ограничены, знания SQL очень ограничены!)
Спасибо, и извините за эссе.