JasonX
2016-04-27, 09:06:04
Hallo,
ich suche eine möglichkeit Sonderzeichen auszukommentieren für SQL-Statements in C#.
Ich habe ein kleines Tool, das eine kleine Datenbank aus einem DataGridView Element befüllen soll.
Als SQL-Server verwenden wir MS-SQL.
Dieses Tool bricht mir jedesmall beim zurückschreiben in eine andere Datenbank weg.
Hier mal ein Sniplet des Codes der betroffen ist:
Regex Funktion:
public static string SQLEscape(string sValue)
{
// SQL Encoding: r, n, x00, x1a, Backslash, einfache und doppelte Hochkommas
if (sValue == null) return null;
else return Regex.Replace(sValue, @"[-rnx00x1a\'""_\@]", @"$0");
}
Insert-Aktion bei Button-Click Event:
private void cmd_bestuecken_Click(object sender, EventArgs e)
{
SqlConnection updatedb = new SqlConnection();
updatedb.ConnectionString = @"Data Source=servername;Initial Catalog=updatedb;User ID=username;Password=password";
//updatedb.Open();
string updatequery;
using (SqlCommand update = new SqlCommand())
{
update.Connection = updatedb;
updatedb.Open();
for(int i=0; i< dataGridView1.Rows.Count;i++)
{
updatequery = @"INSERT INTO Kunden VALUES ("
+ dataGridView1.Rows[i].Cells["Kundennummer"].Value + ", "
+ dataGridView1.Rows[i].Cells["Kundenname"].Value + ", "
+ dataGridView1.Rows[i].Cells["Kundenmail"].Value + ", "
+ dataGridView1.Rows[i].Cells["Telefon"].Value + ");";
update.CommandText = SQLEscape(updatequery);
update.ExecuteNonQuery();
updatedb.Close();
}
}
}
Im Anhang der Fehler der kommt wenn ich diesen Code ausführe.
Ich vermute das Problem liegt bei den Sonderzeichen.
Hier in dem Fehler liegt es wahrscheinlich am "-".
Jedoch greift der Regex nicht wirklich.
Anhang 2 ist die SQL-Tabelle in die geschrieben werden soll.
MfG
Jason
ich suche eine möglichkeit Sonderzeichen auszukommentieren für SQL-Statements in C#.
Ich habe ein kleines Tool, das eine kleine Datenbank aus einem DataGridView Element befüllen soll.
Als SQL-Server verwenden wir MS-SQL.
Dieses Tool bricht mir jedesmall beim zurückschreiben in eine andere Datenbank weg.
Hier mal ein Sniplet des Codes der betroffen ist:
Regex Funktion:
public static string SQLEscape(string sValue)
{
// SQL Encoding: r, n, x00, x1a, Backslash, einfache und doppelte Hochkommas
if (sValue == null) return null;
else return Regex.Replace(sValue, @"[-rnx00x1a\'""_\@]", @"$0");
}
Insert-Aktion bei Button-Click Event:
private void cmd_bestuecken_Click(object sender, EventArgs e)
{
SqlConnection updatedb = new SqlConnection();
updatedb.ConnectionString = @"Data Source=servername;Initial Catalog=updatedb;User ID=username;Password=password";
//updatedb.Open();
string updatequery;
using (SqlCommand update = new SqlCommand())
{
update.Connection = updatedb;
updatedb.Open();
for(int i=0; i< dataGridView1.Rows.Count;i++)
{
updatequery = @"INSERT INTO Kunden VALUES ("
+ dataGridView1.Rows[i].Cells["Kundennummer"].Value + ", "
+ dataGridView1.Rows[i].Cells["Kundenname"].Value + ", "
+ dataGridView1.Rows[i].Cells["Kundenmail"].Value + ", "
+ dataGridView1.Rows[i].Cells["Telefon"].Value + ");";
update.CommandText = SQLEscape(updatequery);
update.ExecuteNonQuery();
updatedb.Close();
}
}
}
Im Anhang der Fehler der kommt wenn ich diesen Code ausführe.
Ich vermute das Problem liegt bei den Sonderzeichen.
Hier in dem Fehler liegt es wahrscheinlich am "-".
Jedoch greift der Regex nicht wirklich.
Anhang 2 ist die SQL-Tabelle in die geschrieben werden soll.
MfG
Jason