SqlParameter的用法介绍
作者:admin发布时间:2021-11-02分类:软件教程浏览:评论:0
一般来说,在更新DataTable或者DataSet时,如果不选用SqlParameter,那麼当导入的Sql句子发生分歧时,如字符串数组中带有反斜杠,程序流程便会产生不正确,而且别人能够随意地根据拼凑Sql句子来开展引入进攻。
string sql = "update Table1 set name = 'Pudding' where ID = '1'";//未选用SqlParameter
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=.\SQLExpress;Integrated Security=true;AttachDbFilename=|DataDirectory|\Database.mdf;User Instance=true";//联接字符串数组与数据库查询相关
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
return(cmd.ExecuteNonQuery());
}
catch (Exception)
{
return -1;
throw;
}
finally
{
conn.Close();
}
以上编码未选用SqlParameter,除开存有安全系数难题,该方式 还没法处理二进制流的升级,如图片文件。根据应用SqlParameter能够处理以上难题,普遍的操作方法有二种,Add方式 和AddRange方式 。
一,Add方式
string sql = "update Table1 set name = @name where ID = @ID";
SqlParameter sp = new SqlParameter("@name", "Pudding"); //转化成一个名称为@name的主要参数,务必以@开始表明是加上的主要参数,并给其取值"Pudding"
cmd.Parameters.Add(sp); //把主要参数自变量加上到指令目标中去
sp = new SqlParameter("@ID", "1");
cmd.Parameters.Add(sp);
该方式 每一次只有使用一个SqlParameter。以上编码的功用是将ID值就等于1的字段名name升级为Pudding(姓名)。
二,AddRange方式
?
1
2 SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@name", "Pudding"), new SqlParameter("@ID", "1") };
cmd.Parameters.AddRange(paras);
显而易见,Add方式 在加上好几个SqlParameter时不方便,这时,能够选用AddRange方式 。
下边是根据SqlParameter向数据库查询储存及载入照片的编码。
public int SavePhoto(string photourl)
{
FileStream fs = new FileStream(photourl, FileMode.Open, FileAccess.Read);//建立FileStream目标,用以向BinaryReader载入字节数数据流分析
BinaryReader br = new BinaryReader(fs);//建立BinaryReader目标,用以载入下边的byte二维数组
byte[] photo = br.ReadBytes((int)fs.Length); //新创建byte二维数组,写入br中的数据信息
br.Close();//还记得要关掉br
fs.Close();//也有fs
string sql = "update Table1 set photo = @photo where ID = '0'";
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=.\SQLExpress;Integrated Security=true;AttachDbFilename=|DataDirectory|\Database.mdf;User Instance=true";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlParameter sp = new SqlParameter("@photo", photo);
cmd.Parameters.Add(sp);
try
{
conn.Open();
return (cmd.ExecuteNonQuery());
}
catch (Exception)
{
return -1;
throw;
}
finally
{
conn.Close();
}
}
public void ReadPhoto(string url)
{
string sql = "select photo from Table1 where ID = '0'";
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=.\SQLExpress;Integrated Security=true;AttachDbFilename=|DataDirectory|\Database.mdf;User Instance=true";
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();//选用SqlDataReader的办法来获取数据
if (reader.Read())
{
byte[] photo = reader[0] as byte[];//将第0列的数据信息写入byte二维数组
FileStream fs = new FileStream(url,FileMode.CreateNew);建立FileStream目标,用以载入字节数数据流分析
fs.Write(photo,0,photo.Length);//将byte二维数组中的数据信息载入fs
fs.Close();//关掉fs
}
reader.Close();//关掉reader
}
catch (Exception ex)
{
throw;
}
finally
{
conn.Close();
}
}
}
标签:SqlParameter
- 上一篇:qq拼音输入法怎么自定义短语?
- 下一篇:ASP.NET中如何获取汉字的拼音介绍
相关推荐
你 发表评论:
欢迎- 软件教程排行
- 最近发表