MySqlCommand Command.Parameters.Add é obsoleto

Eu estou fazendo um aplicativo de formulário do Windows c # no visual studio 2010.

Esse aplicativo está se conectando a um database mysql e quero inserir dados nele.

Agora eu tenho essa parte do código:

MySqlConnection connection; string cs = @"server=server ip;userid=username;password=userpass;database=databse"; connection = new MySqlConnection(cs); connection.Open(); MySqlCommand command = new MySqlCommand(); string SQL = "INSERT INTO `twMCUserDB` (`mc_userName`, `mc_userPass`, `tw_userName`, `tw_userPass`) VALUES ('@mcUserName', '@mcUserPass', '@twUserName', '@twUserPass')"; command.CommandText = SQL; command.Parameters.Add("@mcUserName", mcUserNameNew); command.Parameters.Add("@mcUserPass", mcUserPassNew); command.Parameters.Add("@twUserName", twUserNameNew); command.Parameters.Add("@twUserPass", twUserPassNew); command.Connection = connection; command.ExecuteNonQuery(); connection.Close(); 

A conexão está bem. Isso funciona.

Eu li aqui que a maneira que eu tenho agora, é uma maneira de salvar a consulta. Isso ainda está certo?

E agora para a questão real. Com esse código acima, recebo o seguinte aviso no visual studio:

 'MySql.Data.MySqlClient.MySqlParameterCollection.Add(string, object)' is obsolete: '"Add(String parameterName, Object value) has been deprecated. Use AddWithValue(String parameterName, Object value)"' 

Esse aviso é para todos os parâmetros.

E nem está funcionando, porque os valores inseridos são @mcUserName, @mcUserPass e assim por diante, em vez dos valores que as variables ​​mcUserNameNew e assim por diante estão mantendo …

Então, minha pergunta é, estou fazendo algo errado, e qual é a nova maneira de injeção SQL sql salvar uma consulta?

tente AddWithValue

 command.Parameters.AddWithValue("@mcUserName", mcUserNameNew); command.Parameters.AddWithValue("@mcUserPass", mcUserPassNew); command.Parameters.AddWithValue("@twUserName", twUserNameNew); command.Parameters.AddWithValue("@twUserPass", twUserPassNew); 

e não envolva os espaços reservados com aspas simples.

 string SQL = "INSERT INTO `twMCUserDB` (`mc_userName`, `mc_userPass`, `tw_userName`, `tw_userPass`) VALUES (@mcUserName, @mcUserPass, @twUserName, @twUserPass)"; 

Basta editar / remover algum código nesta parte

 ('@mcUserName', '@mcUserPass', '@twUserName', '@twUserPass') 

para

 (@mcUserName, @mcUserPass, @twUserName, @twUserPass) 

e Adicionar (a AddWithValue (

Por favor, leia este artigo, aconselhando-o contra o uso de AddWithValue :

https://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/

Ele diz basicamente que AddWithValue às vezes pode incorretamente inferir o tipo correto. Use Add vez disso.

@mcUserName precisa corresponder ao mc_userName na consulta.

então seu parm deve ser @mc_userName

Este é o código VB …

 cmd.Parameters.AddWithValue("@number", 1) 'set @number as numeric cmd.Parameters.AddWithValue("@text", "this will be a text variable") cmd.Parameters("@number").Value = 321 'now @number has a value cmd.Parameters("@text").Value = "A string value" 'now @text has a value cmd.ExecuteNonQuery()