我是新的數據庫,並正在使用C#的Access 2007數據庫銷售點。我有以下方法:插入/更新發送參數有什麼好處?
public static OleDbCommand connect()
{
try
{
string path = System.Environment.GetEnvironmentVariable("USERPROFILE");
string cadena = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="[email protected]"\Documents\VikingPOS.accdb";
conexion = new OleDbConnection(cadena);
conexion.Open();
command = new OleDbCommand();
command = conexion.CreateCommand();
return command;
}
catch (OleDbException e)
{
MessageBox.Show("Error: {0}", e.Errors[0].Message);
return null;
}
}
所以我一直插入和更新表的信息是這樣的:
OleDbCommand link = Conexion.connect();
link.CommandText = "UPDATE ordenes SET subtotal = " + subtotal + ",impuesto = " + impuesto + ",total = " + total + " WHERE id_mesa = " + id_mesa + " AND id_estado = 1";
link.ExecuteNonQuery();
或
OleDbCommand link = Conexion.connect();
link.CommandText = "INSERT INTO secciones(descripcion,fecha_insert) VALUES ('" + nombre + "',Date())";
link.ExecuteNonQuery();
但我可也看到有些人使用以下語法插入和更新:
using (OleDbConnection myCon = new OleDbConnection(connectionString))
{
try
{
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "UPDATE ingredientes SET [descripcion]=?,[id_medida]=?,[id_categoria]=?,[costo]=?,[impuesto]=?,[precio_venta]=?,[existencia]=?,[fecha_insert]=? WHERE [id_ingrediente]=?";
cmd.Parameters.AddWithValue("@descripcion", p.getNombre());
cmd.Parameters.AddWithValue("@id_medida", p.getId_medida());
cmd.Parameters.AddWithValue("@id_categoria", p.getId_categoria());
cmd.Parameters.AddWithValue("@costo", p.getCosto());
cmd.Parameters.AddWithValue("@impuesto", p.getImpuesto());
cmd.Parameters.AddWithValue("@precio_venta", p.getPrecio_venta());
cmd.Parameters.AddWithValue("@existencia", p.getExistencia());
cmd.Parameters.AddWithValue("@fecha_insert", fechaHoy);
cmd.Parameters.AddWithValue("@id_ingrediente", p.getId());
cmd.Connection = myCon;
myCon.Open();
int x = cmd.ExecuteNonQuery();
...
所以我的問題是,使用「AddWithValue」方法將值作爲參數傳遞的好處是什麼?我這樣做的方式非常簡單,但迄今爲止工作完美,這就是爲什麼我一直這樣做。
謝謝!你的回答非常清楚,我沒有想到我希望避免的那種可能性。 – Dukra
@ user3312437:不客氣親愛的:),我很高興能幫到你。 –