Ошибка получения в eecute reader, что мой синтаксис sql неверен - PullRequest
0 голосов
/ 14 января 2020

Я предполагаю, что проблема в том, что у меня есть два отдельных запроса внутри одной команды. Есть ли способ обойти это?

Строка подключения заполнена примерами данных, но она подключается правильно.

Я также знаю, что не безопасно размещать строки подключения внутри фактического файл, но в данный момент это только для целей тестирования.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace Multiple_forms
{
    public partial class Register : Form
    {
        public Register()
        {
            InitializeComponent();
        }

        private void registerSubmitButton_Click(object sender, EventArgs e)
        {
            string myConnection = "Server=localhost;Database=Houses;Uid=user;Pwd=password;";
            MySqlConnection myConn = new MySqlConnection(myConnection);

            string selectQuery = "Select * from users where RegistrationKey = '" + this.regKeyTextBox.Text + ";" + "UPDATE users set UserName = '" + this.regUsernameTextBox.Text.ToLower() +
                                 "', Password = '" + this.regPasswordTextBox.Text + "', Email ='" +
                                 this.regEmailTextBox.Text + "' WHERE RegistrationKey = '" + this.regKeyTextBox.Text +
                                 "';";

            string inputPass = this.regPasswordTextBox.Text;
            string inputPassConfirm = this.regPasswordConfirmTextBox.Text;

            MySqlCommand selectCommand = new MySqlCommand(selectQuery, myConn);
            MySqlDataReader myReader;

            if (inputPass == inputPassConfirm)
            {
                myConn.Open();
                myReader = selectCommand.ExecuteReader();



            int regCount = 0;
            while (myReader.Read())
            {
                regCount = regCount + 1;
            }

            if (regCount == 1)
                {
                    MessageBox.Show("You have registered successfully!");
                }
                else
                {
                    MessageBox.Show("Invalid registration key.");
                }
            }
            else
            {
                MessageBox.Show("Passwords don't match.");
                Thread.Sleep(2000);
                this.Close();
            }
        }
    }
}

Ответы [ 2 ]

1 голос
/ 14 января 2020

Обновить это как

string selectQuery = "Select * from users where RegistrationKey = '" + this.regKeyTextBox.Text + "';" + "UPDATE users set UserName = '" + this.regUsernameTextBox.Text.ToLower() +
                                 "', Password = '" + this.regPasswordTextBox.Text + "', Email ='" +
                                 this.regEmailTextBox.Text + "' WHERE RegistrationKey = '" + this.regKeyTextBox.Text +
                                 "';";
1 голос
/ 14 января 2020

Поскольку вы получаете синтаксическую ошибку Sql, я подозреваю, что проблемы лежат в вашем запросе selectQuery. Как вы можете видеть ниже, вы не закрываете кавычки после this.regKeyTextBox.Text.

 string selectQuery = "Select * from users where RegistrationKey = '" + this.regKeyTextBox.Text + ";" + "UPDATE users set UserName = '" + this.regUsernameTextBox.Text.ToLower() +
                      "', Password = '" + this.regPasswordTextBox.Text + "', Email ='" +
                      this.regEmailTextBox.Text + "' WHERE RegistrationKey = '" + this.regKeyTextBox.Text +
                      "';";

Попробуйте изменить запрос на:

string selectQuery = "Select * from users where RegistrationKey = '" + this.regKeyTextBox.Text + "';" + "UPDATE users set UserName = '" + this.regUsernameTextBox.Text.ToLower() +
                      "', Password = '" + this.regPasswordTextBox.Text + "', Email ='" +
                      this.regEmailTextBox.Text + "' WHERE RegistrationKey = '" + this.regKeyTextBox.Text +
                      "';";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...