delete - mysql c# tutorial
C#con los parĂ¡metros de MySQL INSERT (9)
Intente ajustar el código en "SqlDbType" para que coincida con su tipo de base de datos si es necesario y use este código:
comm.Parameters.Add("@person",SqlDbType.VarChar).Value=MyName;
o:
comm.Parameters.AddWithValue("@person", Myname);
Eso debería funcionar, pero recuerde que con Command.Parameters.Add (), puede definir el SqlDbType específico y con Command.Parameters.AddWithValue (), intentará obtener el SqlDbType basado en el valor del parámetro de forma implícita, que puede romperse a veces si no puede de manera implícita. convertir el tipo de datos.
Espero que esto ayude.
Buenos días a todos, estoy usando Visual C # 2010 y MySQL versión 5.1.48-community. Espero que me puedas ayudar con este código. No lo encuentro funcionando en mí. ¿Qué me estoy perdiendo?
string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
MySqlConnection conn = new MySqlConnection(connString);
conn.Open();
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO room(person,address) VALUES(@person, @address)";
comm.Parameters.Add("@person", "Myname");
comm.Parameters.Add("@address", "Myaddress");
comm.ExecuteNonQuery();
conn.Close();
Y cuando intento compilarlo. Dice:
La columna de persona no puede ser nula
EDITADO:
Pero cuando intento este código.
comm.CommandText = "INSERT INTO room(person,address) VALUES(''Myname'', ''Myaddress'')";
Pero este código es propenso al ataque de inyección de SQL, pero funciona, no me da un error.
EDITADO:
Traté de usar esto. Lo encontré here así que pensé que funcionaría, pero me da este error.
El índice (basado en cero) debe ser mayor o igual a cero y menor que el tamaño de la lista de argumentos.
¿Alguna idea?
string a = "myname";
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO room(person,address) VALUES(?,?)";
//cmd.Prepare();
cmd.Parameters.Add("person", MySqlDbType.VarChar).Value = a;
cmd.Parameters.Add("address", MySqlDbType.VarChar).Value = "myaddress";
cmd.ExecuteNonQuery(); // HERE I GOT AN EXCEPTION IN THIS LINE
Cualquier ayuda sería muy apreciada.
EDITADO: SOLUCIONADO Utilicé este código:
cmd.CommandText = "INSERT INTO room(person,address) VALUES(?person,?address)";
cmd.Parameters.Add("?person", MySqlDbType.VarChar).Value = "myname";
cmd.Parameters.Add("?address", MySqlDbType.VarChar).Value = "myaddress";
cmd.ExecuteNonQuery();
¡Gracias!
Lo que hice es así.
String person;
String address;
person = your value;
address =your value;
string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
MySqlConnection conn = new MySqlConnection(connString);
conn.Open();
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO room(person,address) VALUES(''"+person+"'',''"+address+"'')";
comm.ExecuteNonQuery();
conn.Close();
Me enfrentaba a un problema muy similar al intentar insertar datos utilizando mysql-connector-net-5.1.7-noinstall y Visual Studio (2015) en la aplicación Windows Form. No soy un gurú de C #. Por lo tanto, se tarda alrededor de 2 horas para resolver todo.
El siguiente código funciona últimamente:
string connetionString = null;
connetionString = "server=localhost;database=device_db;uid=root;pwd=123;";
using (MySqlConnection cn = new MySqlConnection(connetionString))
{
try
{
string query = "INSERT INTO test_table(user_id, user_name) VALUES (?user_id,?user_name);";
cn.Open();
using (MySqlCommand cmd = new MySqlCommand(query, cn))
{
cmd.Parameters.Add("?user_id", MySqlDbType.Int32).Value = 123;
cmd.Parameters.Add("?user_name", MySqlDbType.VarChar).Value = "Test username";
cmd.ExecuteNonQuery();
}
}
catch (MySqlException ex)
{
MessageBox.Show("Error in adding mysql row. Error: "+ex.Message);
}
}
Puedes usar el método AddWithValue
como:
string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
MySqlConnection conn = new MySqlConnection(connString);
conn.Open();
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO room(person,address) VALUES(@person, @address)";
comm.Parameters.AddWithValue("@person", "Myname");
comm.Parameters.AddWithValue("@address", "Myaddress");
comm.ExecuteNonQuery();
conn.Close();
O
Probar con ?
en lugar de @
, como
string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
MySqlConnection conn = new MySqlConnection(connString);
conn.Open();
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO room(person,address) VALUES(?person, ?address)";
comm.Parameters.Add("?person", "Myname");
comm.Parameters.Add("?address", "Myaddress");
comm.ExecuteNonQuery();
conn.Close();
Espero eso ayude...
Tres cosas: use la instrucción using
, use AddWithValue
y los parámetros de prefijo con? y agregue Allow User Variables=True
a la cadena de conexión.
string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
using (var conn = new MySqlConnection(connString))
{
conn.Open();
var comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO room(person,address) VALUES(@person, @address)";
comm.Parameters.AddWithValue("?person", "Myname");
comm.Parameters.AddWithValue("?address", "Myaddress");
comm.ExecuteNonQuery();
}
También vea http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx para obtener más información sobre el uso del comando, y http://dev.mysql.com/doc/refman/5.1/en/connector-net-connection-options.html para obtener información sobre la opción Permitir variables de usuario ( solo se admite en la versión 5.2.2 y superior ).
Tuve el mismo problema - Finalmente probé el? sigil en lugar de @, y funcionó.
Según los documentos:
Nota. Las versiones anteriores del proveedor utilizaron el símbolo ''@'' para marcar los parámetros en SQL. Esto es incompatible con las variables de usuario de MySQL, por lo que el proveedor ahora usa ''?'' Símbolo para localizar parámetros en SQL. Para admitir código anterior, puede establecer ''sintaxis antigua = sí'' en su cadena de conexión. Si lo hace, tenga en cuenta que no se lanzará una excepción si no puede definir un parámetro que pretendía usar en su SQL.
De Verdad? ¿Por qué no lanza una excepción si alguien intenta usar la llamada sintaxis antigua? Unas pocas horas por el desagüe para un programa de 20 líneas ...
Utilice el método AddWithValue
:
comm.Parameters.AddWithValue("@person", "Myname");
comm.Parameters.AddWithValue("@address", "Myaddress");
prueba esto esta funcionando
MySqlCommand dbcmd = _conn.CreateCommand();
dbcmd.CommandText = sqlCommandString;
dbcmd.ExecuteNonQuery();
long imageId = dbcmd.LastInsertedId;
comm.Parameters.Add("person", "Myname");