Я работаю над проектом, в котором я использую метаданные mp3-песен в классе струн. Это данные (например, исполнитель, название и т. Д.), Которые я хочу скопировать в базу данных mySQL (из списка, составленного из данных), для которого у меня есть следующий запрос:
SELECT * FROM database.tablename WHERE artist='"+song[i].artist+ "' AND title='" + song[i].title + "' AND genre='"+song[i].genre+"';
Код работает отлично (зная, что 12 строк успешно скопированы), пока цикл for не достигнет песни, содержащей апостроф ('), он завершается с синтаксической ошибкой для данного символа. Например: песня [я]. Название это я не она. Я перепробовал все, что мог себе представить:
- Я пытался заменить 'на string.empty
- Пытался заменить на ""
- Даже пытался заменить на "''" (2 апострофа), чтобы запрос мог распознать апостроф, но, похоже, ничего не помогло (всегда получалась одна и та же синтаксическая ошибка, как в случае, когда замены даже не было)
Вот строка, чтобы вы могли видеть, как я пытался:
song[i].artist = song[i].artist.Replace("'","");
Итак, мой вопрос: есть ли какое-нибудь решение, чтобы избавиться от апострофа, или каким-либо образом заставить запрос работать?
РЕДАКТИРОВАТЬ: Вот мой оригинальный код (только для цикла) для лучшего понимания.
for (int i = 0; i < Array.Length; i++)
{
Command = @"SELECT * FROM database.tablename WHERE artist='"+song[i].artist+ "' AND title='" + song[i].title + "' AND genre='"+song[i].genre+"';";
MySqlCommand myCommand = new MySqlCommand(Command);
using (MySqlConnection mConnection = new MySqlConnection(ConnectionString.ToString()))
{
adapter = new MySqlDataAdapter(Command,mConnection);
mConnection.Open();
adapter.Fill(dataset);
int adat = dataset.Tables[0].Rows.Count;
if (adat <= 0) //if current data does not exist
{
song[i].artist = song[i].artist.Replace("'","\'");
song[i].title = song[i].title.Replace("'", "\'");
song[i].genre = song[i].genre.Replace("'", "\'");
myCommand = new MySqlCommand("INSERT INTO database.tablename (artist,title,length,genre) VALUES ('"+song[i].artist+"','"+song[i].title+"','"+song[i].length+"','"+song[i].genre+"');",mConnection);
myCommand.ExecuteNonQuery();
dataset.Clear();
}
mConnection.Close();
}
}
И вот что я "использую" (извините, не знаю, как сделать так, чтобы это выглядело правильно):
используя Систему;
using System.Collections.Generic;
using System.ComponentModel;
используя System.Data;
использование System.Drawing;
использование System.Linq;
используя System.Text;
использование System.Threading.Tasks;
использование System.Windows.Forms;
используя System.IO;
используя TagLib;
используя TagLib.Id3v2;
используя System.Configuration;
using System.Data.SqlClient;
используя MySql;
используя MySql.Data;
использование MySql.Data.MySqlClient;
использование Programname.Properties;