Начинающий здесь:
В этом ответе на мой вопрос о том, как вставлять данные в SQL Server, он упомянул параметры передачи, а не конкатенацию строк, как в настоящее время.
Это действительно необходимо для безопасности? Если да, то какие именно параметры проходят? Когда я google, я много разбираюсь в хранимых процедурах. Это то, чего я хочу, я еще не знаю о хранимых процедурах....
Если вы можете указать мне в правильном направлении, я был бы признателен.
Спасибо.
EDIT:
Хорошо, вот что я получил. Кажется, что он правильно обновляет базу данных, и в конце концов я изменю жестко закодированные ints на входы с метки. Пожалуйста, подтвердите, что, как я это сделал, не уязвим для каких-либо SQL-инъекций или взломов.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
public partial class Stats : System.Web.UI.Page
{
public SqlDataReader DataReader;
public SqlCommand Command;
string queryString = ("INSERT INTO UserData (UserProfileID, ConfidenceLevel, LoveLevel, HappinessLevel) VALUES (@UID, @CL, @LL, @HL);");
//string queryString = ("INSERT INTO UserData (UserProfileID, ConfidenceLevel, LoveLevel, HappinessLevel) VALUES ('a051fc1b-4f51-485b-a07d-0f378528974e', 2, 2, 2);");
protected void Page_Load(object sender, EventArgs e)
{
LabelUserID.Text = Membership.GetUser().ProviderUserKey.ToString();
}
protected void Button1_Click(object sender, EventArgs e)
{
//connect to database
MySqlConnection database = new MySqlConnection();
database.CreateConn();
//create command object
Command = new SqlCommand(queryString, database.Connection);
//add parameters. used to prevent sql injection
Command.Parameters.Add("@UID", SqlDbType.UniqueIdentifier);
Command.Parameters["@UID"].Value = Membership.GetUser().ProviderUserKey;
Command.Parameters.Add("@CL", SqlDbType.Int);
Command.Parameters["@CL"].Value = 9;
Command.Parameters.Add("@LL", SqlDbType.Int);
Command.Parameters["@LL"].Value = 9;
Command.Parameters.Add("@HL", SqlDbType.Int);
Command.Parameters["@HL"].Value = 9;
Command.ExecuteNonQuery();
}
}