SqlCommand.Parameters.Add()用法

本文详细解释了SQL查询中@符号的用途以及SqlCommand.Parameters.Add()方法的用法,包括参数赋值、参数类型指定及参数长度设定。通过实例演示,帮助开发者更好地理解和应用这些SQL注入技巧。
摘要由CSDN通过智能技术生成
  • private bool AddInfo(string strName, string strImage)
    {
        sqlcon = new SqlConnection(strCon);
        FileStream FStream = new FileStream(strImage, FileMode.Open, FileAccess.Read);
        BinaryReader BReader = new BinaryReader(FStream);
        byte[] byteImage = BReader.ReadBytes((int)FStream.Length);
         SqlCommand sqlcmd = new SqlCommand("insert into tb_Image(name,photo) values(@name,@photo)",     sqlcon);
         sqlcmd.Parameters.Add("@name", SqlDbType.VarChar, 50).Value = strName;
         sqlcmd.Parameters.Add("@photo", SqlDbType.Image).Value = byteImage;
        sqlcon.Open();
        sqlcmd.ExecuteNonQuery();
        sqlcon.Close();
        return true;

    ========================================
    上段代码中蓝色部分中的@是什么意思?是如何使用的?还有SqlCommand.Parameters.Add()的用法
    2010年6月4日 6:22
    今夜有雨 的头像
    0 分数

答案

  • @表示这是一个变量,在这里表示参数,将从SQL外部传入,这和下面的@name是对应的。

    SqlCommand.Parameters.Add()用法可以参考http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection_methods(v=VS.100).aspx

    其实我个人还是比较倾向于SqlCommand.Parameters.Add(new SqlParameter("@param", value))的写法,简洁一些。


    Tech Blog:  http://gildor.cnblogs.com
    • 已标记为答案 Mog Liang 2010年6月11日 1:15
    2010年6月6日 8:46
    Gildor Wang 的头像
    720 分数
  • @表示这是一个变量,在这里表示参数,将从SQL外部传入,这和下面的@name是对应的。

    SqlCommand.Parameters.Add()用法可以参考http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection_methods(v=VS.100).aspx

    其实我个人还是比较倾向于SqlCommand.Parameters.Add(new SqlParameter("@param", value))的写法,简洁一些。


    Tech Blog:  http://gildor.cnblogs.com


    呵呵 不过最好指定类型不然.NET自己还要分析下~~~

    我比较喜欢用AddWithValue方法,哈哈 不过和你这样添加也都差不多


    I see you~ http://hi.baidu.com/1987raymondMy Blog~~~
    2010年6月8日 2:33
    Raymond Tang 的头像
    (MVP)
    17,510 分数
  • 你好!

    上面的@只是 C#里面写sql的一种参数形式! 在java中, 是使用 “?” 作为占位符的 [insert into tbl values(?,?,?)] ,而在C#中就是: [insert into tbl values(@parm1,@parm2,@parm3)], 把他看作参数就是了吧!

    既然是参数, 所以就需要给对应的参数赋值了!

    sqlcmd.Parameters.Add("@name", SqlDbType.VarChar, 50).Value = strName; 
        sqlcmd.Parameters.Add("@photo", SqlDbType.Image).Value = byteImage;

    你这里就是对应个上面的@name,@photo参数在赋值! 这里是区分大小写的! ,SqlDbType.VarChar:指定参数类型,与你设计数据库的字段类型一样, 50:数据长度, 与你设计数据库设置的长度一样!


    我一般的写法:

    SqlParameter[] paras = {
          new SqlParameter("@name", strName),
          new SqlParameter("@photo", byteImage)
    };

    sqlcmd.Parameters.AddRange(paras);

    这样我感觉代码比较简洁! 当然各有各的爱好风格.

     

    希望对你有帮助!


    Anything Is Possible !
    2010年6月8日 6:31
    Jiang Hao 的头像
    Nexocial
    375 分数

全部回复

  • @表示这是一个变量,在这里表示参数,将从SQL外部传入,这和下面的@name是对应的。

    SqlCommand.Parameters.Add()用法可以参考http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection_methods(v=VS.100).aspx

    其实我个人还是比较倾向于SqlCommand.Parameters.Add(new SqlParameter("@param", value))的写法,简洁一些。


    Tech Blog:  http://gildor.cnblogs.com
    • 已标记为答案 Mog Liang 2010年6月11日 1:15
    2010年6月6日 8:46
    Gildor Wang 的头像
    720 分数
  • @表示这是一个变量,在这里表示参数,将从SQL外部传入,这和下面的@name是对应的。

    SqlCommand.Parameters.Add()用法可以参考http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection_methods(v=VS.100).aspx

    其实我个人还是比较倾向于SqlCommand.Parameters.Add(new SqlParameter("@param", value))的写法,简洁一些。


    Tech Blog:  http://gildor.cnblogs.com


    呵呵 不过最好指定类型不然.NET自己还要分析下~~~

    我比较喜欢用AddWithValue方法,哈哈 不过和你这样添加也都差不多


    I see you~ http://hi.baidu.com/1987raymondMy Blog~~~
    2010年6月8日 2:33
    Raymond Tang 的头像
    (MVP)
    17,510 分数
  • 你好!

    上面的@只是 C#里面写sql的一种参数形式! 在java中, 是使用 “?” 作为占位符的 [insert into tbl values(?,?,?)] ,而在C#中就是: [insert into tbl values(@parm1,@parm2,@parm3)], 把他看作参数就是了吧!

    既然是参数, 所以就需要给对应的参数赋值了!

    sqlcmd.Parameters.Add("@name", SqlDbType.VarChar, 50).Value = strName; 
        sqlcmd.Parameters.Add("@photo", SqlDbType.Image).Value = byteImage;

    你这里就是对应个上面的@name,@photo参数在赋值! 这里是区分大小写的! ,SqlDbType.VarChar:指定参数类型,与你设计数据库的字段类型一样, 50:数据长度, 与你设计数据库设置的长度一样!


    我一般的写法:

    SqlParameter[] paras = {
          new SqlParameter("@name", strName),
          new SqlParameter("@photo", byteImage)
    };

    sqlcmd.Parameters.AddRange(paras);

    这样我感觉代码比较简洁! 当然各有各的爱好风格.

     

    希望对你有帮助!


    Anything Is Possible !
    2010年6月8日 6:31
    Jiang Hao 的头像
    Nexocial
    375 分数
  • 没特殊直接用Parameters.AddWithValue就是了!

    2010年6月9日 6:21
    shizhusz110 的头像
    15 分数
  • @name 是sql中的参数名称或者是存储过程的参数名称。
    2010年6月9日 6:23
### 回答1: `ADO.NET` 是一种在 .NET 框架中用于访问和操作数据库的技术。`Command.Parameters.Add` 方法是用于向 ADO.NET 中的 SqlCommand 对象添加参数的方法。 通过使用参数,可以避免 SQL 注入攻击,因为参数的值将被视为单独的数据,而不是 SQL 语句的一部分。此外,使用参数可以提高代码的可维护性和可读性,因为 SQL 语句和参数的值将分开存储。 语法示例: ``` SqlCommand cmd = new SqlCommand(); cmd.CommandText = "SELECT * FROM Employees WHERE EmployeeID = @EmployeeID"; cmd.Parameters.Add("@EmployeeID", SqlDbType.Int).Value = 1; ``` 在这个例子中,我们创建了一个名为 `cmd` 的 SqlCommand 对象,并为它设置了一条 SQL 语句。然后,我们使用 `Parameters.Add` 方法添加了一个名为 "@EmployeeID" 的参数,并为它设置了一个整数类型的值。 总之,使用 `Command.Parameters.Add` 方法可以方便地在 ADO.NET 中添加参数,并使用它们来更安全地执行 SQL 查询。 ### 回答2: 在ADO.NET中,Command.Parameters.Add方法的作用是向数据库命令对象的参数集合中添加参数。参数集合中存储了在执行数据库命令时使用的参数信息。 使用命令参数可以将数据值传递给数据库命令,提供了一种将变量值绑定到查询或存储过程的方式。它可以用于设置查询条件、更新或插入数据,以及执行存储过程等。通过参数化查询,可以提高应用程序的安全性,防止SQL注入攻击。 Command.Parameters.Add方法用于向参数集合中添加新的参数。它接受多个参数,用于设置参数的名称、数据类型、长度、方向和值等。常用的参数设置有ParameterName、DbType和Value。 ParameterName属性用于设置参数的名称,以在SQL语句中引用它。DbType属性用于指定参数的数据类型,确保传递给数据库的数据与数据库表列的数据类型匹配。Value属性用于设置参数的值,该值将被传递给命令对象的执行。 通过Command.Parameters.Add方法创建的参数对象将被自动添加到参数集合中,并在执行数据库命令时被使用。参数集合中的参数可以通过索引或名称进行访问和设置。通过索引访问参数能够提高性能,而通过名称访问参数则更易读和维护。 总之,ADO.NET中的Command.Parameters.Add方法允许我们通过参数化查询方式向数据库命令传递参数值,提高应用程序的安全性和性能。它提供了一种灵活的方法来设置、访问和管理数据库命令的参数。 ### 回答3: ADO.NET是一种用于连接数据库的技术,它提供了一系列的类和方法用于执行数据库操作。在ADO.NET中,Command.Parameters.Add方法是一个用于向指定的SqlCommand对象中添加参数的方法。 SqlCommand是ADO.NET中用于执行SQL命令的类,通过Command对象我们可以向数据库发送SQL语句并获取执行结果。在发送SQL语句之前,我们通常需要将一些值作为参数传递给SQL语句,以便进行相应的操作。Command.Parameters.Add方法就是用于向SQL命令中添加这些参数的。 使用Command.Parameters.Add方法可以将参数的名称、数据类型和值添加到SqlCommand对象中。参数的名称用来在SQL命令中标识该参数,数据类型用于指定参数的数据类型,值用来为参数赋值。添加参数后,我们可以在SQL语句中以参数的形式引用这些参数,而不需要直接将值写入SQL语句中。 通过使用参数化查询,我们可以有效地防止SQL注入攻击,并提高了查询的执行效率。此外,参数还使我们的代码更具可读性和可维护性,使得修改SQL语句或更改参数值变得更加方便。 总结来说,SqlCommand.Parameters.Add方法的作用就是将参数添加到SqlCommand对象中,以便在执行SQL命令时使用。通过参数化查询,我们可以提高应用程序的安全性、执行效率和可读性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值