-
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()的用法
答案
-
@表示这是一个变量,在这里表示参数,将从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
-
@表示这是一个变量,在这里表示参数,将从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
-
你好!
上面的@只是 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
全部回复
-
@表示这是一个变量,在这里表示参数,将从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
-
@表示这是一个变量,在这里表示参数,将从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
-
你好!
上面的@只是 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
-
没特殊直接用Parameters.AddWithValue就是了!
-
@name 是sql中的参数名称或者是存储过程的参数名称。2010年6月9日 6:23