Мне было интересно, если кнопка обновления может сохранить изменения, внесенные в таблицу. Я написал этот код, но я понятия не имею, как он может работать
Это код, который я написал для кнопки обновления:
string conString = "Data Source=MIRANDA-PC;Initial Catalog=Futebol do Rosa;Integrated Security=True";
SqlConnection con = new SqlConnection(conString);
string selectSql = "Update Players$ set Player Name='" + dataGridView2.Text + "";
SqlCommand cmd = new SqlCommand(selectSql, con);
con.Open();
Это таблица, в которой я хочу обновить значения в:
Ну, вам просто нужно выполнить запрос с помощью ExecuteNonQuery
.
Но что более важно, вы всегда должны использовать параметризованные запросы. Этот тип конкатенаций строк открыт для атак SQL Injection.
Также using
инструкцию using
для SqlConnection
и SqlCommand
.
И если ваша таблица или столбец содержит несколько слов, вы должны использовать их с []
качестве [Player Name]
. И, честно говоря, немного странно использовать знак $
в имени таблицы.
using(SqlConnection con = new SqlConnection(conString))
using(SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "Update Players$ set [Player Name] = @name";
cmd.Parameters.Add("@name", SqlDbType.NVarChar, 16).Value = dataGridView2.Text;
con.Open();
cmd.ExecuteNonQuery();
}
Вы должны выполнить свой SQL-запрос с помощью своего объекта db.
dbinstance.ExecuteSqlCommand(string sqlcommand, object[] params);
Этот метод предназначен как для DDL, так и для DML. вы также можете использовать метод ExecuteNonQuery.
Лучшее решение (если возможно) для преобразования вашего уровня DAL (Data Access Layer) в платформу Entity, вместо написания собственных SQL-запросов. Это безопасно по дизайну и никогда не уязвимо для SQL-инъекций любого типа. Вот какой код макета:
using (AppEntities currDb = new AppEntities)
{
Players PlayerToEdit =
from player in currDb.Players
where player.PlayerID == lngPlayerID
select player.First();
PlayerToEdit.PlayerName = dataGridView2.Text;
currDb.SaveChanges();
}
Вы можете прочитать об этом еще несколько: https://msdn.microsoft.com/en-us/data/ef.aspx
cmd.CommandText = "Update Players$ set [Player Name] = @Playername";
cmd.Parameters.Add("@Playername", SqlDbType.NVarChar, 16).Value = dataGridView2.Text;
con.Open();
cmd.ExecuteNonQuery();