Amar chand123 Ответов: 2

Синтаксическая ошибка в инструкции INSERT into C# winform


я стараюсь но я не в состоянии найти ошибку в заявлении

Что я уже пробовал:

private void btnRegister_Click(object sender, EventArgs e)
        {
            if (txtUserName.Text != "" && txtPassword.Text != "" && txtConfirmPassword.Text != "")  
            {
                if (txtPassword.Text.ToString().Trim().ToLower() == txtConfirmPassword.Text.ToString().Trim().ToLower())    
                {
                    String connstring = ConfigurationManager.ConnectionStrings["Data"].ConnectionString;
                    string cmdstring = "Insert Into userID (UserName, Password) Values (@User, @Password)";

                    using (OleDbConnection con = new OleDbConnection(connstring))
                    {
                        using (OleDbCommand cmd = new OleDbCommand(cmdstring, con))
                        {
                            string UserName = txtUserName.Text;
                            string Password = Cryptography.Encrypt(txtPassword.Text.ToString());  
                            con.Open();
                            cmd.Parameters.AddWithValue("@User", txtUserName.Text);
                            cmd.Parameters.AddWithValue("@Password", Cryptography.Encrypt(txtPassword.Text.ToString()));
                            cmd.ExecuteNonQuery();
                            con.Close();
                            MessageBox.Show("Record inserted successfully", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
                
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Password and Confirm Password doesn't match", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information);  
                }
            }
            else
            {
                MessageBox.Show("Please fill all the fields", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information);  
            }
        }

Patrice T

Что такое точное сообщение об ошибке ?

Amar chand123

Необработанное исключение типа 'System.Data.OleDb.OleDbException' произошло в System.Data.dll

Дополнительная информация: синтаксическая ошибка в инструкции INSERT INTO.

Patrice T

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

Andre Oosthuizen

Идентификатор пользователя-это имя вашей таблицы?, выглядит как имя поля

Amar chand123

имя таблицы

2 Ответов

Рейтинг:
2

Dave Kreskowiak

<rant>
Вы же знаете, что любое свойство Text уже возвращает строку, не так ли? Так с какой стати ты звонишь?ToString() для строки, возвращаемой свойством Text?


Вы не указываете, что говорится в сообщении об ошибке, кроме "синтаксической ошибки". Всегда есть что-то, что говорит вам, в чем ошибка и где.

Но я собираюсь сделать предположение. Похоже, вы пытаетесь вставить данные в таблицу под названием "userId". На самом деле у вас нет таблицы в базе данных под названием "userId", не так ли?

И/или у вас нет столбцов в этой таблице под названием "Имя пользователя" или "пароль".

И/или типы данных в этих столбцах базы данных имеют неправильный тип или длину.

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


Рейтинг:
17

OriginalGriff

Password это зарезервированное слово SQL, и его не следует использовать в качестве имени столбца. Если это так, вам нужно избегать его каждый раз, когда вы используете его:

string cmdstring = "INSERT INTO userID (UserName, [Password]) Values (@User, @Password)";


Но вы никогда не должны хранить пароли в открытом тексте - это серьезная угроза безопасности. Здесь есть некоторая информация о том, как это сделать: Хранение паролей: как это сделать.[^]

И помните: если это веб-сайт и у вас есть какие-либо пользователи из Европейского союза, то применяется GDPR, а это означает, что вы должны обрабатывать пароли как конфиденциальные данные и хранить их безопасным и безопасным способом. Текст-это ни то, ни другое, и штрафы могут быть ... ГМ ... выдающийся. В декабре 2018 года немецкая компания получила относительно низкий штраф в размере 20 000 евро именно за это.


Amar chand123

Спасибо