asp.net中的记忆盲区
<1> 连接数据库 用read方法取出数据 在web.config取出连接字符串
string sqlconn = ConfigurationManager.ConnectionStrings["db_showHouseConnectionString"].ToString();
SqlConnection conn=new SqlConnection (sqlconn );
SqlCommand com = new SqlCommand("select * from film", conn);
conn.Open();
SqlDataReader sql = com.ExecuteReader(CommandBehavior.CloseConnection);//当读取完毕数据时同时关闭数据库连接
GridView1.DataSource = sql;
GridView1.DataBind();
<2> GridView中有一个属性能够实现局部刷新 EnableSortingAndPagingCallbacks="True"
<3> ctrl+shift+a为添加新的一个页面的快捷键
<4> 在Cmd中添加参数时能够可以根据数据类型自动添加相应的参数
com.Parameters.AddWithValue("name", Name);
name为自己起的的名字
Name为实参数
此处一般应用于存储过程中的应用
<5>比较好的数据库记录删除方式
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string sqlconn = ConfigurationManager.ConnectionStrings["db_showHouseConnectionString"].ToString();
SqlConnection conn = new SqlConnection(sqlconn);
SqlCommand com = new SqlCommand("select * from film", conn);
SqlDataAdapter sda = new SqlDataAdapter(com);
SqlCommandBuilder scmd = new SqlCommandBuilder(sda);//此句很重要
//DataTable dt = new DataTable();
DataSet sa = new DataSet();
sda.Fill(sa, "dt2");
sa.Tables["dt2"].DefaultView.Delete(e.RowIndex);
int rows = sda.Update(sa, "dt2");
Response.Write("成功");
}
<6>将数据集放入到catche中,,缓存的作用用来暂时存储数据,减少与服务器的链接
DataSet ds =(DataSet) Cache.Get("cache_Name");//在cache中取出数据集然后转化使用
if (ds == null)
{
string sqlconn = ConfigurationManager.ConnectionStrings["db_showHouseConnectionString"].ToString();
SqlConnection conn = new SqlConnection(sqlconn);
SqlCommand com = new SqlCommand("select * from film", conn);
SqlDataAdapter sda = new SqlDataAdapter(com);
DataSet sa = new DataSet();
sda.Fill(sa, "dt");
//* 将dataset放入到页面缓存中去,以便能及时的取出信息,增加客户浏览的速度 */
sa.ExtendedProperties.Add("dt2_name", DateTime.Now.ToLongTimeString());
Cache.Insert("cache_Name", sa, null, DateTime.Now.AddMinutes(2), TimeSpan.Zero);
//____________________________________________________________________________________*//
GridView1.DataSource = sa.Tables["dt"].DefaultView;
GridView1.DataBind();
}
Cache.Remove("cache_Name");//将数据集从缓存中移除掉
<7> 标记出当前网站所在的目录 Response.Write(Server .MapPath ("."));
<8> 所有的文件在计算机中都能将其转化成二进制的格式的流媒体,将其存入到数据库中或者将其存入到xml中的文件中,,应用的时候可以将其在读取出来,然后转化成相应的文件
///<summary>
/// 将文件转化成二进制的字符串
///</summary>
///<param name="Path">文件存储的路径</param>
///<returns></returns>
public static string Create_File_Tobit(string Path)
{
FileStream Fs = new FileStream(Path, FileMode.Open, FileAccess.Read);
//创建fs实例读取数据流
int Lenth = Convert.ToInt32(Fs.Length);
//得到数据的大小
Byte[] liu = new byte[Lenth];
//创建一个内存缓存区
BinaryReader BR = new BinaryReader(Fs);
//申请一个BR用了完成数据流二进制的转化
BR.Read(liu, 0, Lenth);
string Data_liu = Convert.ToBase64String(liu);
BR.Close();
Fs.Close();
return Data_liu;
}
///<summary>
/// 将二进制文件存为文件
///</summary>
///<param name="Path">存入文件的路径</param>
///<param name="Shu_Ju">二进制格式文件字符</param>
public static void bit_To_File(string Path, string Shu_Ju)
{
FileStream Fs = new FileStream(Path, FileMode.Create, FileAccess.Write);//此为创建一个fileStream实例,格式为创建,写入
BinaryWriter BW = new BinaryWriter(Fs);//二进制文件写入实例
BW.Write(Convert.FromBase64String(Shu_Ju));//将二进制格式的流媒体写入文件
BW.Close();
Fs.Close();
}
以上两个方法中,方法1实现的是将传入的路径中的文件读取成二进制流媒体,然后转化成相应的字符串。
方法2实现的是将传入的二进制的格式的文件存入到传来的地址中,引用为:
string a = Du_Bite.Create_File_Tobit(Server.MapPath("qq.jpg"));//将已有的图片的文件读出为二进制文件
Du_Bite.bit_To_File(Server.MapPath("ddd.jpg"), a);//将二进制的文件存入到文件中命名为ddd.jpg
<9>将图片文件存入到数据库中,然后读取出来
1、数据库定义
三个字段 id int ; gid uniqueidentifier ;img image ;表名为xml
uniqueidentifier:为数据类型,全球唯一标识,一般接受guid定义的类型
image:为图片的类型
2、页面中放一个上传文件的控件,用来上传图片
3、存入数据库的代码如下:
if (FileUpload1.HasFile)
{
Guid gid = Guid.NewGuid(); //此句为表示出全球唯一的标识代码编号,,据称为全球不会重复
string sqlconn = ConfigurationManager.ConnectionStrings["db_showHouseConnectionString"].ToString();
SqlConnection conn = new SqlConnection(sqlconn);
SqlCommand com = new SqlCommand("INSERT INTO Xml (guid, img) VALUES (@guid,@img)", conn);
com.Parameters.Add("@guid", SqlDbType.UniqueIdentifier).Value = gid;
com.Parameters.Add("@img", SqlDbType.Image).Value = FileUpload1.FileBytes; //将上传的文件转换成流媒体,,然后放入到数据库img中。。。。。。此处只能用这种方法存入数据
conn.Open();
com.ExecuteNonQuery();
conn.Close();
Session["gid"] = gid;
Response.Write("成功");
}
else
{
Response.Write("请上传文件!");
}
4、将图片文件从数据库中取出,,然后写入到界面中
string sqlconn = ConfigurationManager.ConnectionStrings["db_showHouseConnectionString"].ToString();
SqlConnection conn = new SqlConnection(sqlconn);
SqlCommand com = new SqlCommand("select img from xml where guid='"+Session ["gid"].ToString ()+"'", conn);
conn.Open();
byte[] liu = (byte[])com.ExecuteScalar(); //将流媒体读出然后存入到计算机缓存中
conn.Close();
Response.OutputStream.Write(liu, 0, liu.Length); //将流媒体写入到页面中,,,记住这种方法
Response.End(); //读取结束
《9》 下面这个实例是将图片的文件写入到xml文件中。。。此处是一个难点,要牢牢记住
<1> 这个函数实现xml文件的创建以及写入
这个函数是通过的方法调用
string Xml_Path = Server.MapPath("~/App_Data/img.xml");
Guid gid = Guid.NewGuid();
Session["gid"] = gid.ToString();
Bite_To_Xml.File_To_Xml(FileUpload1, Xml_Path, gid.ToString ());
Response.Write(gid.ToString() + "img.xml 已经成功创建");
public static void File_To_Xml(FileUpload fu, string Xml_Path, string Gid)
{ //fu为调用此函数的一个上传控件 Xml_Path 这个是要保存的xml文件的地址 Gid 是要保存的编号
if (fu.HasFile)
{
string File_Path = fu.FileName.ToString();
int File_Lenth = fu.PostedFile.ContentLength; //得到上传图片的大小
try
{
Byte[] bit_Array = new byte[File_Lenth];
Stream streamobj = fu.PostedFile.InputStream;//将上传的文件转化成流媒体
streamobj.Read(bit_Array, 0, File_Lenth);//将文件写入到内存中
/* 以下是建立新的xml文件 ,以方便将流媒体存入到xml文件中 */
XmlDocument xdom = new XmlDocument();
//声明一个xml文件
if (!File.Exists(Xml_Path))
{//判断文件是否存在,如果不存在的时候将新建一个xml文件
XmlDeclaration sml_Title = xdom.CreateXmlDeclaration("1.0", "utf-8", null);
xdom.AppendChild(sml_Title);
//创建一行文档的表头声明
XmlElement Root = xdom.CreateElement("File");
xdom.AppendChild(Root);
//创建根节点 这地方要记住的是每一个子节点都传承与父节点之下,,就是说当这个节点是上面一个节点的子节点的时候就必须使用上一个 //节点的实例创建例如: xdom.AppendChild(Root);;——————》 Root.AppendChild(Rootlement);
XmlElement Rootlement = xdom.CreateElement("Image");
Root.AppendChild(Rootlement);
//创建父节点
XmlElement ChildElement = xdom.CreateElement("Guid");
ChildElement.InnerText = Gid;
Rootlement.AppendChild(ChildElement);
//将guid传来的值存入xml的子节点
XmlElement ChildElement2 = xdom.CreateElement("Size");
ChildElement2.InnerText = File_Lenth.ToString();
Rootlement.AppendChild(ChildElement2);
//将文件的大小存入xml文件中
XmlElement ChildElementimgDate = xdom.CreateElement("imgDate");
ChildElementimgDate.InnerText = Convert.ToBase64String(bit_Array); //将媒体流转化成字符写入到xml中
Rootlement.AppendChild(ChildElementimgDate);
//将流媒体写入到xml文件中
xdom.Save(Xml_Path);
}
else
{
xdom.Load(Xml_Path);
//读取xml文件到xdom中
XmlNode root = xdom.SelectSingleNode("File");
//读取到xml中相应的节点,然后标志处此行来
XmlElement Rootelement = xdom.CreateElement("Image");
root.AppendChild(Rootelement);
//创建父节点
XmlElement ChildElement = xdom.CreateElement("Guid");
ChildElement.InnerText = Gid;
Rootelement.AppendChild(ChildElement);
//将guid传来的值存入xml的子节点
XmlElement ChildElement2 = xdom.CreateElement("Size");
ChildElement2.InnerText = File_Lenth.ToString();
Rootelement.AppendChild(ChildElement2);
//将文件的大小存入xml文件中
XmlElement ChildElementimgDate = xdom.CreateElement("imgDate");
ChildElementimgDate.InnerText = Convert.ToBase64String(bit_Array);
Rootelement.AppendChild(ChildElementimgDate);
//将流媒体写入到xml文件中
xdom.Save(Xml_Path);
}
}
catch (Exception oe)
{
throw (oe);
}
}
}
<2> 下面这个函数实现xml文件的读取工作,从xml文件中读取出来。。然后写入到页面中
protected void Button4_Click(object sender, EventArgs e)
{
XmlDocument Xml = new XmlDocument();
Xml.Load(Server.MapPath("App_Data/img.xml"));//此处为新实例化的一个xml文件
XmlNodeList XNL = Xml.SelectSingleNode("//Image[Guid='" + Session["gid"].ToString () + "']").ChildNodes; //将xml文件读取出来标志此节点以下的所有的节点集合赋值给XNL
for(int i=0;i<XNL .Count ;i++)
{
string imgdata=XNL.Item (2).InnerText ;
Response.OutputStream.Write(Convert.FromBase64String(imgdata), 0, imgdata.Length); //将文件流写入到页面中
Response.End(); //结束文件的写入工作
}
}
《10》 怎样将图片的二进制媒体流,在页面中显示图片的同时保证控制的图片的大小的控制
1. 添加一个新的aspx 命名 为 image.aspx;
2. 在image.aspx里 的 page_load里 写这句话:Response.BinaWrite(byte[]buffer); 输出buffer中的二进制图像流,将图片显示到这个页面中。
3. 然后把你的image控件的 Imageurl = "image.aspx";
最终 你的 image控件 就 能显示 二进制流图像了。
在image.aspx中显示的图片,在别的页面中调用此页面就可以。
转载于:https://www.cnblogs.com/zuoguanglin/archive/2012/03/20/2408946.html
asp.net中的记忆盲区相关推荐
- 在 ASP.NET 中执行 URL 重写
在 ASP.NET 中执行 URL 重写 发布日期: 8/23/2004 | 更新日期: 8/23/2004 Scott Mitchell 4GuysFromRolla.com 适用范围: Micro ...
- 在ASP.NET中UrlRewrite的实现(能隐藏扩展名)之一
摘要:介绍如何使用 Microsoft ASP.NET 执行动态 URL 重写.URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程.讨论实现 URL 重写的各种技术,并介绍执 ...
- 在ASP.NET中实现Url Rewriting
概要 分析如何使用微软提供的ASP.NET来对动态产生的URL地址进行网址重写. 网址重写是实现一种截取网址请求并将其进行处理后重新指向到一个指定的网址的过程.作者本人在对各种实现网址重写的技术进行研 ...
- 在ASP.NET中实现Url Rewriting(非常的有价值!)
在ASP.NET中实现Url Rewriting 作者:Scott Mitchell 翻译:Janssen 1.0.请一定要抱着批评的态度来看该文章 1.1. 概要 分析如何使用微软提供的ASP.NE ...
- ASP.NET中 RequiredFieldValidator(非空验证)的使用
ylbtech-ASP.NET-Control-Validator: RequiredFieldValidator(非空验证)的使用 ASP.NET中 RequiredFieldValidator(非 ...
- 搜集《ASP.NET中常用的26个优化性能方法》
1. 数据库访问性能优化 a.数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接 ...
- 在ASP.NET中跟踪和恢复大文件下载
在Web应用程序中处理大文件下载的问题一直出了名的困难,因此对于大多数站点来说,如果用户的下载被中断了,它们只能说悲哀降临到用户的身上了.但是我们现在不必这样了,因为你可以使自己的ASP.NET应用程 ...
- ASP.NET中使用MD5和SHA1算法加密
你的主页或者你管理的网站有各种密码需要保护,把密码直接放在数据库或者文件中存在不少安全隐患,所以密码加密后存储是最常见的做法.在ASP.NET中实现加密非常容易..NET SDK中提供了CookieA ...
- ASP.NET中如何防范SQL注入式攻击
1将sql中使用的一些特殊符号,如' -- /* ; %等用Replace()过滤: 2限制文本框输入字符的长度: 3检查用户输入的合法性:客户端与服务器端都要执行,可以使用正则. 4使用带参数的SQ ...
最新文章
- 给小孩发布一个有趣的网站 在线动物园
- iOS内实现h5原生开发
- LeetCode Algorithm 剑指 Offer II 056. 二叉搜索树中两个节点之和
- 第一次作业:基于Linux进程模型分析
- Linaro GCC 交叉编译工具链 国内源下载列表 (持续更新)
- 宁畅定制算力为冰雪训练插上智慧翅膀
- 为什么中国企业海外营销都选择Facebook?
- 智能语音识别转文字字幕实时上屏直播系统
- 为什么我的儿子不沉迷游戏?一位游戏策划家长的分享
- java备忘--20190828
- 内容为王,如何打造爆款小红书笔记?
- Android 调用微信添加关注
- 数据结构——超全的数据结构思维导图
- html计算圆周长,【实用性程序】弧微分计算圆周长
- linux搭建直播步骤,linux环境(CentOS-7)搭建HLS直播测试环境
- 校园招聘部分公司薪资待遇
- 主叫号码未显示【一分钟教你解决】
- js中===和==的区别
- STM32 Proteus仿真GP2Y101红外测距温度湿度DHT11内部RTC-0010
- 烟台职称计算机考试时间,2015年烟台职称计算机考试报名时间和有关事项通知...
热门文章
- ssl双向认证_SSL握手协议不清楚?vTrus为你讲解其详细流程
- Oracle NVL()和NVL2()函数
- 090_HTMLCollection和NodeList对象
- php 一致性hash,【转载】memcache分布式 [一致性hash算法] 的php实现
- Android应用开发-广播和服务
- linux 编译文件mm,Linux编译C++文件,说没有找到头文件,怎么啊?新手,不太会用...
- 科大讯飞语音助手Lite智能鼠标电脑版安装不成功为什么?怎么办?
- 用java异常完成丢色子功能,java自动投掷骰子设计报告(含源码)
- 二层交换机可以划分vlan吗_二层交换机上,属于不同VLAN的PC该如何通信
- idea swagger生成接口文档_spring boot集成Swagger-UI接口文档