public partial class SignUp : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btSignup_Click(object sender, EventArgs e)
{
if (tbUname.Text != "" & tbPass.Text != "" && tbName.Text != "" && tbEmail.Text != "" && tbCPass.Text != "")
{
if (tbPass.Text == tbCPass.Text)
{
String CS = ConfigurationManager.ConnectionStrings["Database_AvaliacaoConnectionString1"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
SqlCommand cmd = new SqlCommand("insert into Users Values('" + tbUname.Text + "','" + tbPass.Text + "','" + tbEmail.Text + "','" + tbName.Text + "','')", con);
con.Open();
cmd.ExecuteNonQuery();
lblMsg.Text = "Registration Successfull";
lblMsg.ForeColor = Color.Green;
// Response.Redirect("~/Signin.aspx");
}
}
else
{
lblMsg.ForeColor = Color.Red;
lblMsg.Text = "Passwords do not match";
}
}
else
{
lblMsg.ForeColor = Color.Red;
lblMsg.Text = "All Fields Are Mandatory";
}
}
}
В таблице "Пользователи" я получил следующие значения:
[Uid] int IDENTITY (1,1) PRIMARY KEY,
[Username] NVARCHAR(MAX) NULL,
[Password] NVARCHAR(MAX) NULL,
[Email] NVARCHAR(MAX) NULL,
[Name] NVARCHAR(MAX) NULL
Это приводит к ошибке при попытке зарегистрироваться:
System.Data.SqlClient.SqlException: "Явное значение столбца идентификации в таблице" Пользователи "может быть указано только при использовании списка столбцов, а IDENTITY_INSERT включен.
По какой-то причине он не позволяет мне добавлять значения.
Вы вставляете в столбцы, чтобы они отображались в таблице:
"insert into Users Values('" + tbUname.Text + "','" + tbPass.Text + "','" + tbEmail.Text + "','" + tbName.Text + "','')"
Итак, вы говорите здесь, что первый UID
поля должен быть установлен на все, что находится в tbUname.Text
. Это вздор.
Вместо этого укажите, какие поля вы вставляете, а затем перечислите их в следующем порядке:
"insert into Users (Username, Password, Email, [Name]) Values('" + tbUname.Text + "','" + tbPass.Text + "','" + tbEmail.Text + "','" + tbName.Text + "')"
Несвязанные, но тревожные вещи в вашем коде:
Не связывайте строку SQL вместе. Это дает вам широкое распространение для атаки SQL-инъекций. Вместо этого параметризуйте свой SQL
Не храните пароли в текстовом виде в базе данных. Они должны быть хэшированы и соленые.
''
строку , которую вы пытаетесь вставить в первоначальном заявлении. Конец твоего: + tbName.Text + "','')"
Конец моего: + tbName.Text + "')"
uid
получает значение от самой БД. Вы не предоставите это!insert into t (col2, col3) values ('v1', 'v2')
столбцы, в которые вы вставляете, вот так (и оставьте столбецuid
):insert into t (col2, col3) values ('v1', 'v2')