Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Подскажите как сделать так чтобы человек и компьютер мог вводить каждое слово только 1 раз:

MareIl Знаток (253), закрыт 2 недели назад
System::Void xxxxxx::WWWW::Accept_Click(System::Object^ sender, System::EventArgs^ e)
{
/* label2->Hide();*/

//Соединение с БД
String^ connectionString = "provider=Microsoft.ACE.OLEDB.12.0;Data Source=DatabaseWords.mdb";
OleDbConnection^ dbConnection = gcnew OleDbConnection(connectionString);

//Запрос к БД
dbConnection->Open(); //открываем соединение
String^ query = "SELECT * FROM [DatabaseWords]"; //запрос
OleDbCommand^ dbComand = gcnew OleDbCommand(query, dbConnection); //команда
OleDbDataReader^ dbReader = dbComand->ExecuteReader(); //считываем данные

//Вводим слово
String^ MyWord = write->Text;
int lastIndex = MyWord->Length - 1;
String^ MyWord_Cop = MyWord->Substring(0, lastIndex) + Char::ToUpper(MyWord[lastIndex]);

if (dbReader->HasRows == false) {
MessageBox::Show("Ошибка считывания данных!", "Ошибка");
}
else {
bool found = false;
while (dbReader->Read()) {
WordComp->Text = Convert::ToString(dbReader["_City"]);
if (WordComp->Text->Length > 0 && MyWord_Cop->Length > 0 && WordComp->Text[0] == MyWord_Cop[MyWord_Cop->Length - 1]) {
found = true;
break;
}
}
if (!found) {
MessageBox::Show("Совпадений не найдено!", "Результат");
}
}

return System::Void();
}
Лучший ответ
Джейсон Знаток (479) 2 недели назад
 System::Void xxxxxx::WWWW::Accept_Click(System::Object^ sender, System::EventArgs^ e)  
{
// Соединение с БД
String^ connectionString = "provider=Microsoft.ACE.OLEDB.12.0;Data Source=DatabaseWords.mdb";
OleDbConnection^ dbConnection = gcnew OleDbConnection(connectionString);

// Вводим слово
String^ MyWord = write->Text->Trim()->ToLower(); // Приводим слово к нижнему регистру и убираем пробелы
if (MyWord->Length == 0) {
MessageBox::Show("Введите слово!", "Ошибка");
return;
}

// Проверяем, было ли уже использовано слово
dbConnection->Open(); // открываем соединение
String^ checkQuery = "SELECT COUNT(*) FROM [UsedWords] WHERE [Word] = ?";
OleDbCommand^ checkCommand = gcnew OleDbCommand(checkQuery, dbConnection);
checkCommand->Parameters->Add(gcnew OleDbParameter("@word", MyWord));
int count = Convert::ToInt32(checkCommand->ExecuteScalar());

if (count > 0) {
MessageBox::Show("Это слово уже было использовано!", "Ошибка");
dbConnection->Close();
return;
}

// Добавляем слово в список использованных
String^ insertQuery = "INSERT INTO [UsedWords] ([Word]) VALUES (?)";
OleDbCommand^ insertCommand = gcnew OleDbCommand(insertQuery, dbConnection);
insertCommand->Parameters->Add(gcnew OleDbParameter("@word", MyWord));
insertCommand->ExecuteNonQuery();

// Запрос к БД для получения слова компьютера
String^ query = "SELECT * FROM [DatabaseWords]";
OleDbCommand^ dbCommand = gcnew OleDbCommand(query, dbConnection);
OleDbDataReader^ dbReader = dbCommand->ExecuteReader();

if (dbReader->HasRows == false) {
MessageBox::Show("Ошибка считывания данных!", "Ошибка");
} else {
bool found = false;
while (dbReader->Read()) {
WordComp->Text = Convert::ToString(dbReader["_City"]);
if (WordComp->Text->Length > 0 && MyWord->Length > 0 && WordComp->Text[0] == MyWord[MyWord->Length - 1]) {
found = true;
break;
}
}
if (!found) {
MessageBox::Show("Совпадений не найдено!", "Результат");
}
}

dbConnection->Close();
return System::Void();
}
MareIlЗнаток (253) 2 недели назад
Здравствуйте, это нужно создать новую таблицу-UsedWord? Я создал их, но когда пытаюсь запустить у строки: String^ query = "SELECT * FROM [DatabaseWords]"; появляется надпись - System.InvalidOperationException: "Подключение не было закрыто. Подключение открыто.", помогите пожалуйста
MareIlЗнаток (253) 2 недели назад
Прошу прощения, разобрался
MareIlЗнаток (253) 2 недели назад
Вы можете подсказать как сделать это же самое действие только теперь для компьютера?)
Остальные ответы
ωωω ΞΞΞ Знаток (394) 2 недели назад
Мне кажется это так не работает
MareIlЗнаток (253) 2 недели назад
как?
Vkckd Cxc Niane Ученик (169) 2 недели назад
что
MareIlЗнаток (253) 2 недели назад
что?
Vkckd Cxc Niane Ученик (169) Жан Куандыков, Жан куандыков
александр редькин Ученик (142) 2 недели назад
Как
александр редькинУченик (142) 2 недели назад
  • Ы
александр редькин Ученик (142) александр редькин,
александр редькинУченик (142) 2 недели назад
александр редькин в ответ александр редькин, менее минуты назад
Ученик
александр редькин,
Похожие вопросы