2010-10-28 6 views
1

i ont une requête SQL comme suitproblème d'insertion de syntaxe de requête

String S = Editor1.Content.ToString(); 
    Response.Write(S); 
    string sql = "insert into testcase.ishan(nmae,orders) VALUES ('9',@S)"; 
    OdbcCommand cmd = new OdbcCommand(sql, myConn); 
      cmd.Parameters.AddWithValue("@S", S); 
      cmd.ExecuteNonQuery(); 

Erreur: Column 'orders' cannot be null at System.Data.Odbc.OdbcConnection.HandleError

Répondre

3

Mieux vaut utiliser quelque chose comme:

var sqlCommandText = "insert into testcase.ishan(nmae,orders) VALUES ('9', @S)"; 
using (var connection = new SqlConnection()) 
{ 
    using (var command = new SqlCommand(sqlCommandText , connection)) 
    { 
     command.Parameters.AddWithValue("@S", S); 
     command.ExecuteNonQuery(); 
    } 
} 

L'utilisation de paramètres empêche SQL injection. La solution d'Andrews ne fonctionne pas, je crois. ExecuteNonQuery() renverra le nombre de lignes affectées si vous en avez besoin.

Les instructions using se chargeront de mettre la connexion correctement, donc après, vous n'avez plus de connexions ouvertes. Cela est dû au fait que SqlConnection implémente IDisposable.

+0

Le type ou le nom de l'espace de noms 'SqlConnection' est introuvable – Ninad

+0

Ajoutez ceci en utilisant: using System.Data.SqlClient; –

+0

Vous devez référencer/importer/utiliser System.Data.SqlClient. Voir: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.aspx – Peter