c# - 为什么我的 SQL 表中会出现@firstname 和@lastname?

标签 c# asp.net sql sql-server

我的 ASP.NET 项目中有以下代码,但我仍然不明白为什么我的 SQL Server 表保存的是参数名称而不是值。任何帮助将不胜感激。

[WebMethod]
public static void InsertMethod(string firstname, string lastname)
{
    SqlConnection con = new SqlConnection(@"Data Source=KIMBERLY\SQLSERVER02;Initial Catalog=Chalegh;User ID=***;Password=***");
    SqlCommand cmd = new SqlCommand("insert into TestTable values('@Firstname','@Lastname')", con);

    SqlParameter paramFirstName = new SqlParameter();
    paramFirstName.ParameterName = "@Firstname";
    paramFirstName.Value = firstname;
    cmd.Parameters.Add(paramFirstName);

    SqlParameter paramLastName = new SqlParameter();
    paramLastName.ParameterName = "@Lastname";
    paramLastName.Value = lastname;
    cmd.Parameters.Add(paramLastName);

    con.Open();
    cmd.ExecuteNonQuery();

最佳答案

去掉引号,使用AddWithValue像这样的方法:

SqlCommand cmd = new SqlCommand("insert into TestTable values(@Firstname,@Lastname)", con);
cmd.Parameters.AddWithValue("@Firstname",firstname);
cmd.Parameters.AddWithValue("@Lastname",lastname);

您的实际问题是引号。当您使用引号时,@Firstname@Lastname 被视为实际值而不是参数。您不必使用 AddWithValue 方法,但它更短且易于使用。您不需要为每个参数创建 SqlParameter 并一一设置每个属性。

关于c# - 为什么我的 SQL 表中会出现@firstname 和@lastname?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21841964/

相关文章:

c# - 在客户端存储数据的最佳方式 - ASP.Net + JQuery

mysql - SELECT * 连接中列名的别名

sql - SQL Server 中带有子查询的 CASE 语句

c# - VB6 变体类型到 .NET 类型

c# - 在 c# 中使用页脚模板在 GridView 中添加新行

C#/C++ 互操作 - 需要帮助定义我的数据结构

c# - 在 IIS 上运行发布版本时出现 Blazor WebAssembly InvalidCastException

javascript - 从 ASP 传输数据 :NET MVC Controller to view

c# - 单击按钮下载 ASP.NET Excel 文件

mysql - 获取列中允许的最大长度,mysql