Ich erhalte einen schwerwiegenden Fehler bei der Verwendung einer ExecuteNonQuery(). Ich bin neu in der Arbeit mit Sql und als solche im nicht sicher, warum diese SET
Befehl ein Problem verursacht.
Ich verwende MySql 5.5.17, und ich verwende C# .Net Framework 3.5 in der VS2010 IDE.
Exception Message = Schwerwiegender Fehler bei der Befehlsausführung. Die Fehlerzeile = SET @oldguid = 250006;
Der Inhalt der Sql-Datei, die ich verwende, sieht wie folgt aus, ohne die "Kommentare", die ich entfernt habe:
DELETE FROM `disables` WHERE `sourceType`=0 AND `entry`=61904;
INSERT INTO `disables` (`sourceType`, `entry`, `flags`, `comment`) VALUES(0, 61904, 8, 'Magma Totem TEST - can crash client by spawning too many totems');
SET @oldguid = 250006;
SET @newguid = 202602;
UPDATE `creature` SET `guid`=@newguid WHERE `guid`=@oldguid;
UPDATE `creature_addon` SET `guid`=@newguid, `path_id`=@newguid*100 WHERE `guid`=@oldguid;
UPDATE `waypoint_data` SET `id`=@newguid*100 WHERE `id`=@oldguid*100;
UPDATE `areatrigger_teleport` SET `target_orientation`=2.255664 WHERE `id`=4386;
UPDATE `gameobject` SET `spawnMask`=3 WHERE `guid`=22674;
die guid
Spalte ist ein unsigned int(10)
Der C#-Code, mit dem ich diese .sql-Datei verarbeite, lautet wie folgt:
filename = lstBox_SqlFiles.SelectedItem.ToString();
mysql = new MySqlConnection(connection + Database);
string line;
OpenDatabase();
using (StreamReader reader = new StreamReader(filename))
{
StringBuilder parsedLine = new StringBuilder();
int count = 0;
while ((line = reader.ReadLine()) != null)
{
if (line.Length > 0 && !line.StartsWith("--"))
{
if (line.EndsWith(";"))
{
if (parsedLine.Length > 0)
line = parsedLine.ToString() + line;
try
{
count++;
lbl_LineQuery.Text = line;
lbl_QueryCount.Text = String.Format("Count: {0}", count);
MySqlCommand cmd = new MySqlCommand(line, mysql);
cmd.ExecuteNonQuery();
}
catch (MySqlException ex)
{
string msg = String.Format("Source FileName: SqlUpdater.cs\nSql FileName: {0}\nError Line: {1}\nException Message: {2}\n", filename, line, ex.Message);
MessageBox.Show("cmd.ExecuteNonQuery() Error!\n" + msg, "MySql Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
return;
}
sbClear(parsedLine);
}
else
{
parsedLine.Append(line);
continue;
}
}
else
continue;
}
}
Kann jemand ein Problem mit meinem Code erkennen? Muss ich die Zeichenkette "SET @var" besonders manipulieren?
Jede Hilfe ist willkommen Vielen Dank im Voraus
Straßenmeisterei
- Bearbeiten * als Randbemerkung sollte ich darauf hinweisen, dass, wenn ich ein Sql-Management-Programm wie SQLYog verwenden es die gleiche Sql-Datei ohne Problem verarbeitet, so im der Annahme, dass das Problem irgendwo in der Manipulation der Zeichenfolge in meinem C#-Code ist.