web-dev-qa-db-fra.com

les guillemets simples s'échappent lors de l'insertion de chaînes dans une base de données

L'insertion échoue lorsque "" "est utilisé. exemple de chaîne est: Il est un garçon. J'ai tenté de sauter le "" en utilisant un symbole d'échappement, mais je pense que ce n'est pas la bonne façon.

textBox3.Text.Replace("'", " \'");
string sql= "insert into gtable (1text,1memo) values ('"+textBox3.Text+"',null)";
        OleDbCommand cmd = new OleDbCommand(sql, con);

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();

J'ai eu la possibilité de remplacer "'" par "` "mais cela modifie également le texte dans la base de données. Je souhaite conserver "" "comme le même, et également l'insérer dans la base de données.

26
lunchbox

essayer

string sql= "insert into gtable (1text, 1memo) " + 
            "values ('" + textBox3.Text.Replace("'", "''") + "', null)";
38
juergen d

Essaye ça

    string sql= "insert into gtable (1text,1memo) values (@col1,NULL)";
    OleDbCommand cmd = new OleDbCommand(sql, con);
    cmd.Parameters.AddWithValue("@col1",textBox3.Text);
    con.Open();
51
codingbiz

Pour insérer des guillemets simples dans la base de données, remplacez ' avec ''. Dans la base de données, seul un devis unique ira.

Utilisez ceci

string sql= "insert into gtable (1text,1memo) values ('" 
            + textBox3.Text.Replace("'", "''") + "', null)";

Le code de repos est le même.

5
Nikhil Agrawal

Sur l'article MSDN pour String.Replace il dit:

Renvoie une nouvelle chaîne dans laquelle toutes les occurrences d'un caractère Unicode spécifié ou d'une chaîne dans la chaîne actuelle sont remplacées par un autre caractère ou chaîne Unicode spécifié.

Sur la toute première ligne, vous n'affectez pas la valeur de textBox3.Text au résultat de cet appel de méthode, ce qui signifie qu'il ne se passe absolument rien.

De plus, pour échapper à un devis dans SQL Server, vous utilisez simplement deux guillemets simples (Remarque: PAS la même chose qu'un guillemet double).

Cela devrait vous donner le résultat attendu:

textBox3.Text = textBox3.Text.Replace("'", "''");

En outre, vous souhaiterez peut-être examiner String.Format pour vos besoins de concaténation de chaînes.

String escapedInput = textBox3.Text.Replace("'", "''");
String sql = String.Format("insert into gtable (1text,1memo) values ('{0}',null)", escapedInput);
1
Joshua Shearer