Я работаю над сайтом моего членства, подключенным к базе данных. Все таблицы уже созданы в базе данных. Однако у меня проблема с обработкой внешних ключей. Я на самом деле не знаю, как это сделать ...Обработка внешних ключей в asp.net
Я использую VS 2012 для веб-
Это страница регистрации, что член заполняет, когда они хотят, чтобы вступить в клуб. В таблице участников у меня есть несколько внешних ключей, которые нужно обрабатывать: addressID, memberID, EmergencyContactEmail и clubID.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack)
{
SqlConnection regConn = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString);
regConn.Open();
string check = "select count(*) from member where memberEmail ='" + emailTB.Text + "'";
SqlCommand cmd = new SqlCommand(check, regConn);
int i = Convert.ToInt32(cmd.ExecuteScalar().ToString());
if (i == 1)
{
Response.Write("User already exists");
}
regConn.Close();
}
}
protected void SubmitButton_Click(object sender, EventArgs e)
{
try
{
Guid addressGuid = Guid.NewGuid();
Guid medicalGuid = Guid.NewGuid();
Guid membershipGuid = Guid.NewGuid();
SqlConnection regConn = new SqlConnection(ConfigurationManager.ConnectionStrings["Data Source=student5;Initial Catalog=FeelGoodDatabase;Persist Security Info=True;User ID=sa;Password=*******"].ConnectionString);
regConn.Open();
string insertMember = "insert into member (memberEmail, firstName, surname, dateOfBirth, password, contactNumber) values(@email, @firstName, @surname, @dob, @password, @phone)";
string insertAddress = "insert into address (addressID, lineOne, lineTwo, town, county) values (@addressID, @lineOne, @lineTwo, @town, @county)";
string insertEmergency = "insert into emergencyContact (emergencyContactEmail, emergencyContactName, emergencyContactSurname, emergencyContactNumber) values (@emEmail, @emName, @emSurname, @emPhone)";
string insertMedical = "insert into medicalInfo(medicalInfoID, physicalHealthInfo) values (@medicalInfoID, @healthInfo)";
string insertMembership = "insert into membership(membershipID, membershipType, paymentOption, membershipPrice) values (@memID, @memType, @payOption, @amount)";
string selectedMembership = this.RadioButtonList1.SelectedItem.Text;
string selectedPayOption = this.RadioButtonList2.SelectedItem.Text;
SqlCommand cmd = new SqlCommand(insertMember, regConn);
SqlCommand cmdAddress = new SqlCommand(insertAddress, regConn);
SqlCommand cmdEmergency = new SqlCommand(insertEmergency, regConn);
SqlCommand cmdMedical = new SqlCommand(insertMedical, regConn);
SqlCommand cmdMembership = new SqlCommand(insertMembership, regConn);
cmdAddress.Parameters.AddWithValue("@addressID", addressGuid.ToString());
cmdMedical.Parameters.AddWithValue("@medicalInfoID", medicalGuid.ToString());
cmdMembership.Parameters.AddWithValue("@memID", membershipGuid.ToString());
cmd.Parameters.AddWithValue("@email", emailTB.Text);
cmd.Parameters.AddWithValue("@firstName", firstNameTB.Text);
cmd.Parameters.AddWithValue("@surname", surnameTB.Text);
cmd.Parameters.AddWithValue("@dob", dobTB.Text);
cmd.Parameters.AddWithValue("@password", passwordTB.Text);
cmd.Parameters.AddWithValue("@phone", phoneTB.Text);
cmdAddress.Parameters.AddWithValue("@lineOne", lineOneTB.Text);
cmdAddress.Parameters.AddWithValue("@lineTwo", lineTwoTB.Text);
cmdAddress.Parameters.AddWithValue("@town", townTB.Text);
cmdAddress.Parameters.AddWithValue("@county", emailTB.Text);
cmdEmergency.Parameters.AddWithValue("@emEmail", emEmailTB.Text);
cmdEmergency.Parameters.AddWithValue("@emName", emnameTB.Text);
cmdEmergency.Parameters.AddWithValue("@emSurname", emSurnameTB.Text);
cmdEmergency.Parameters.AddWithValue("@emPhone", emPhoneTB.Text);
cmdMedical.Parameters.AddWithValue("@healthInfo", medicalTB.Text);
cmdMembership.Parameters.AddWithValue("@memType", selectedMembership);
cmdMembership.Parameters.AddWithValue("@paymentOption", selectedPayOption);
cmdMembership.Parameters.AddWithValue("@amount", amountTB.Text);
cmd.ExecuteNonQuery();
cmdAddress.ExecuteNonQuery();
cmdEmergency.ExecuteNonQuery();
cmdMedical.ExecuteNonQuery();
cmdMembership.ExecuteNonQuery();
Response.Redirect("MemberPage.aspx");
regConn.Close();
}
catch (Exception)
{
Response.Write("Sign up not successful");
}
}
}
Кроме того, когда я запускаю этот код, я получаю сообщение об ошибке с указанием: Ссылка на объект не указывает на экземпляр объекта, который происходит на этой линии:
SqlConnection regConn = new SqlConnection(ConfigurationManager.ConnectionStrings["Data Source=student5;Initial Catalog=FeelGoodDatabase;Persist Security Info=True;User ID=sa;Password=********"].ConnectionString);
Есть ли у вас какие-либо идеи как это исправить? Спасибо.
Это по существу неопределенной переменной. Забудьте все эти материалы базы данных и сосредоточьтесь на этом. –
ConfigurationManager.ConnectionStrings - это массив, который, вероятно, имеет простой ключ, который относится к элементам раздела ConnectionString вашего web.config. Помещение всей строки подключения в виде индекса массива, вероятно, не является хорошей идеей :) – thsorens
См. Пример в [Свойстве ConfigurationManager.ConnectionStrings] (https://msdn.microsoft.com/en-us/library/system.configuration .configurationmanager.connectionstrings% 28v = vs.110% 29.aspx) для использования. –