如何通过命令提示符将整数插入数据库

时间:2011-01-10 18:52:16

标签: c# sql

我试图使用下面的代码在C#中的数据库中插入一个整数,但每次运行编译器都会通知我,我的整数不是有效列“无效的列名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 个答案:

答案 0 :(得分:3)

首先,如果您不打算使用存储过程,我会养成使用参数化查询的习惯。在你的例子中,我会:

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();
}

idforenamesurname是适当的变量。注意我也在使用using块,这可以确保我的对象在完成后被清理。

答案 1 :(得分:0)

这是因为你的insertString中的'UserID':...“VALUES(UserID”......无效。

您需要传递UserID的值,例如:...“VALUES('myUserIDGoesHere'”...

答案 2 :(得分:0)

您的字符串不会动态读取变量。使用这样的东西:

  

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

根据您正在使用的数据访问类型,有更好的方法,但这只是为了纠正字符串。

答案 3 :(得分:0)

问题是VALUES中的第一个参数 - 它根本没有定义。如果这是用户输入的值,则需要在命令中添加参数并在SQL中使用该参数;例如:

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

然后使用

VALUES(@id, ...
在TSQL中

此外,通常您可能希望让系统生成唯一ID。这是一个最简单的级别,可以定义IDENTITY(自动序列)。

答案 4 :(得分:0)

使用参数化查询:

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();
    }
}

答案 5 :(得分:-2)

要回答您的问题,请尝试:

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