Использую Embarcadero® C++Builder 10 Seattle. Пробую работать с базами данных.
В PhpMyAdmin создал базу данных с полями id_file (счетчик с автоинкрементом), file_name (VARCHAR), file_size (SMALLINT) и id_data (SMALLINT).
На форме ADOConnection1, ADOQuery1, ValueListEditor1 и кнопка Button2.
1) В список ValueListEditor1 в первый столбец закидываю названия файлов, во второй размер, OK.
2) Подключаюсь к моей базе ADOConnection1->Connected = True, OK.
3) В обработчике Button2Click перекидываю данные из ValueListEditor1 в мою базу данных:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
AnsiString file_name, file_size;
for (int j = 1; j ValueListEditor1 ->RowCount-1; j++)
{
file_name = VLEditor1->Cells[0][j];
file_size = StrToInt(VLEditor1->Cells[1][j]);
AnsiString str = "INSERT INTO `files`(`file_name`, `file_size`) VALUES ('";
str += ValueListEditor1 ->Cells[0][j] + "', ";
str += ValueListEditor1 ->Cells[1][j] +")";
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(str);
ADOQuery1->ExecSQL();
}
}
всё работает, OK.
Как использовать переменные file_name и file_size в качестве параметров запроса используя свойство ADOQuery1->Parameters?
Пробую так:
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("INSERT INTO `files`(`file_name`, `file_size`) VALUES (:file_name, :file_size)");
ADOQuery1->Parameters->AddParameter()->Name = "file_name";
ADOQuery1->Parameters->ParamByName("file_name")->Value = file_name;
ADOQuery1->Parameters->AddParameter()->Name = "file_size";
ADOQuery1->Parameters->ParamByName("file_size")->Value = file_size;
ADOQuery1->ExecSQL();
Не работает