Как вставить целое число в базу данных через командную строку - PullRequest
0 голосов
/ 10 января 2011

Я пытаюсь вставить целое число в базу данных на C #, используя приведенный ниже код, но каждый раз, когда я запускаю компилятор, я сообщаю, что мое целое число не является допустимым столбцом «Invalid Column Name UserID»

У кого-нибудь есть понимание этого? Благодарю.

Console.WriteLine("Please enter a new User Id");
        string line = Console.ReadLine();
        int UserID;
        if (int.TryParse(line, out UserID))
        {
            Console.WriteLine(UserID);
            Console.ReadLine();
        }



        //Prepare the command string
        string insertString = @"INSERT INTO tb_User(ID,f_Name, l_Name) VALUES (UserID,'Ted','Turner')";

Ответы [ 6 ]

3 голосов
/ 10 января 2011

Во-первых, я привык бы использовать параметризованные запросы, если вы не планируете использовать хранимые процедуры. В вашем примере я бы:

using (var command = new SqlCommand("INSERT INTO tb_User(ID, f_Name, l_Name) VALUES (@id, @forename, @surname)", conn))
{
  command.Parameters.AddWithValue("id", id);
  command.Parameters.AddWithValue("forename", forename);
  command.Parameters.AddWithValue("surname", surname);

  command.ExecuteNonQuery();
}

Где id, forename, surname - соответствующие переменные. Обратите внимание, что я также использую блоки using, это гарантирует, что мои объекты будут очищены после его завершения.

0 голосов
/ 10 января 2011

Использовать параметризованный запрос:

using (var connection = new SqlConnection(connectionString))
{
    connection.Open();

    using (var insertCommand = new SqlCommand(
        @"INSERT INTO tb_User (ID, f_Name, l_Name)
          VALUES (@ID, 'Ted', 'Turner')", connection))
    {
        insertCommand.Parameters.AddWithValue("@ID", userID);
        insertCommand.ExecuteNonQuery();
    }
}
0 голосов
/ 10 января 2011

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

cmd.Parameters.AddWithValue("@id", UserID);

Затем используйте

VALUES(@id, ...

в TSQL.

Кроме того, обычно вы можете захотеть, чтобы система генерировала уникальный идентификатор. На простейшем уровне это может быть определено IDENTITY (автоматическая последовательность).

0 голосов
/ 10 января 2011

Чтобы ответить на ваш вопрос независимо от вашего подхода, попробуйте:

string insertString = @"INSERT INTO tb_User(ID,f_Name, l_Name) VALUES ("
+ UserID + ",'Ted','Turner')";
0 голосов
/ 10 января 2011

Ваша строка не читает динамически переменные.Используйте что-то вроде этого:

string insertString = string.Format (@ "INSERT INTO tb_User (ID, f_Name, l_Name) VALUES ({0}, '{1}', '{2}') ", UserId," Ted "," Turner ");

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

0 голосов
/ 10 января 2011

это потому, что 'UserID' в вашей insertString: ... "VALUES (UserID" ... недействителен.

вам нужно передать значение для UserID, например: ... "VALUES ('myUserIDGoesHere'" ...

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