Исключение при вставке значений в таблицу SQL через C # - PullRequest
0 голосов
/ 23 июля 2010

Привет, я создал manullay для текстовых полей, а затем использовал его для создания нового пользователя.Я использую SQL SERVER 2005 для серверной части и Visual Server 2008 для фронтальной.

У меня есть эта таблица LoginAccount, в которой хранятся сведения о созданном новом пользователе.Когда я нажимаю кнопку (в которой я написал код для создания нового пользователя с помощью SQL-вставки),

  string strConnection = ConfigurationManager.ConnectionStrings"FHDLConnectionString"].ToString();
        SqlConnection sqlConnection = new SqlConnection(strConnection);
        string username = TextBox1.Text;
        string password = TextBox2.Text;
        string confirmpass = TextBox3.Text;
        string SQLQuery = "Select username From LoginAccount where '" + username + "'";
        string SQLQuery1 = "Insert into LoginAccount values ('" + username + "','" + password + "')";

        SqlCommand command = new SqlCommand(SQLQuery, sqlConnection);
        SqlCommand command1 = new SqlCommand(SQLQuery1, sqlConnection);

        sqlConnection.Open();
        string CheckUsername = "";

        if (password.ToString() != confirmpass.ToString())
        {
            Literal1.Text = " Password's does not match ";
        }
        else
        {
            try
            {
                CheckUsername = command.ExecuteScalar().ToString();
            }
            catch (Exception er)
            {
                Literal1.Text = " Username already exists ";
            }

            string insertQuery = "";

            try
            {
                insertQuery = command1.ExecuteScalar().ToString();
                Server.Transfer("Login_Created.aspx");
            }
            catch (Exception er)
            {
                Literal1.Text = " Could not create the user, Please retry with some other option ";
            }
        }
        sqlConnection.Close();

я получаю

этих исключений, выражениелогический тип, указанный в контексте, где ожидается условие, около 'fhdl' Эта ошибка, которую я получил при первом вылове

и

Objectссылка не установлена ​​на экземпляр объекта. Это при последнем улове.

Но главное, что я могу вставить имя пользователя и пароль в таблицу LoginAccount !!!!!!! то есть, когда я увидел содержимое таблицы, я увидел нового пользователя, созданного в этой таблице.Другое дело Этот код прекрасно выполнялся раньше, но не сейчас: ( Пожалуйста, кто-нибудь может сказать мне, где я ошибаюсь? Я новичок в C # с SQl ...

Ответы [ 2 ]

1 голос
/ 23 июля 2010

1 - ExecuteScalar () означает, что есть возвращаемое значение. Вставка не имеет возвращаемого значения. Вместо этого используйте ExecuteNonQuery.

2 - Кроме того, для оператора вставки укажите поля, в которые вы вставляете. Без указания полей он пытается вставить в первые два столбца таблицы, которые могут не содержать имя пользователя и пароль.

вставить в значения LoginAccount (имя пользователя, пароль) ....

3 - неверно выбранное вами утверждение.

выберите из LoginAccount, где UserName = '... Вам не хватает имени поля.

1 голос
/ 23 июля 2010

Три вещи:

  1. Ваш первый запрос не выполняет то, что вы хотите. Разрешается до:

    Select username From LoginAccount where 'username'

    Вы хотите проверить имя пользователя по базе данных.

  2. Этот код открывает широкие возможности для атак SQL-инъекций. См. в этой статье о том, как предотвратить их в C #.

  3. В аналогичной заметке вы действительно не хотите хранить пароли в открытом виде в вашей базе данных.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...