SqlCommand.Parameters.Add()用法

  • 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 分数

答案

  • 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 分数
  • 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


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

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


    I see you~ http://hi.baidu.com/1987raymondMy Blog~~~
    • 已标记为答案 今夜有雨 2010年6月11日 1:22
    2010年6月8日 2:33
    Raymond Tang
    (MVP)
    17,510 分数
  • 0
    登录进行投票

    你好!

    上面的@只是 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月11日 1:28
    2010年6月8日 6:31
    Jiang Hao
    Nexocial
    375 分数

全部回复

  • 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 分数
  • 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


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

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


    I see you~ http://hi.baidu.com/1987raymondMy Blog~~~
    • 已标记为答案 今夜有雨 2010年6月11日 1:22
    2010年6月8日 2:33
    Raymond Tang
    (MVP)
    17,510 分数
  • 0
    登录进行投票

    你好!

    上面的@只是 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月11日 1:28
    2010年6月8日 6:31
    Jiang Hao
    Nexocial
    375 分数
  • 0
    登录进行投票

    没特殊直接用Parameters.AddWithValue就是了!

    2010年6月9日 6:21
    shizhusz110
    15 分数
  • 0
    登录进行投票
    @name 是sql中的参数名称或者是存储过程的参数名称。
    2010年6月9日 6:23

你可能感兴趣的:(asp.net)