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中显示的图片,在别的页面中调用此页面就可以。



 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464386.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

调试网络收发不通问题

今天在做之前一个项目重构的事情&#xff0c;需要把之前的代码重新做功能&#xff0c;我们有两个设备&#xff0c;他们通过网线连接&#xff0c;用UDP来传输数据。很多人都怀疑UDP丢包什么&#xff0c;不及时什么之类的&#xff0c;如果想把事情做得足够快&#xff0c;最好还是…

VB6.0和VB.Net对照表

想在网上找一下VB.Net中&#xff0c;哪些是VB6.0遗留下来的东西&#xff0c;哪些是VB.Net增加的东西。结果中文的没有找到&#xff0c;找到了一个日文网页。简单的翻译了一下&#xff0c;放在这里&#xff0c;供需要的人参考。 VB6.0和VB.Net的对照表VB6.0VB.NETAddItem Object…

hibernate的初次使用

转载地址&#xff1a;http://blog.csdn.net/aboy123/article/details/10222675 一、Hibernate概述 &#xff08;一&#xff09;什么是Hibernate&#xff1f; hibernate核心内容是ORM&#xff08;关系对象模型&#xff09;。可以将对象自动的生成数据库中的信息&#xff0c;使…

linux 关联数组,linux 普通数组和关联数组

数组&#xff1a;就是借助索引将多个数据存储为一个集合。普通数组&#xff1a;数组的索引只能使用整数关联数组&#xff1a;数组的索引可以使用整数和字符串(要bash4.0以上的版本才支持关联数组)数组通常与循环或者其他判断式交互使用才有比较高的意义普通数组的定义array1(a …

layui之在table的编辑的按钮的思考

点编辑的时候&#xff0c;如果没有在html界面写form&#xff0c;而是在同级目录下写的 修改html的话呢&#xff0c; 就可以在点 编辑 按钮的时候&#xff0c;调用打开tab的方法&#xff0c;把form的html打开&#xff0c;而不用去后台转发转载于:https://www.cnblogs.com/fuckin…

删除rz上传失败乱码的文件

通过rz上传文件失败时&#xff0c;会产生大小为0的乱码的文件&#xff0c;如下 ls -l -rw-r–r– 1 root root 47031 12-15 13:48 ?ղ??.htm 这种类型的文件可用以下命令 find . -maxdepth 1 -size 0 | xargs rm -rf 说明&#xff1a;这种文件大小为0&#xff0c;并且在上…

我用过 | Keil的发展历史

Keil&#xff0c;相信搞嵌入式软硬件开发的读者都不陌生&#xff0c;在全球单片机&#xff08;MCU&#xff09;集成开发环境&#xff08;IDE&#xff09;中&#xff0c;可以说 Keil 占据了半壁江山。Keil 既是一家公司的名称&#xff0c;也是一款 IDE 软件。下面讲述一下 Keil …

C#实现简单WEB服务器

一、HTTP协议的作用原理WWW是以Internet作为传输媒介的一个应用系统&#xff0c;WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型&#xff0c;由Web 浏览器(客户机)和Web服务器(服务器)构成&#xff0c;两者之间采用超文本传送协议&#xff08;HTTP&…

奥鹏C语言专科在线作业答案,电子科大12春《C语言(专科)》在线作业三

《C语言(专科)》在线作业三试卷总分&#xff1a;100 测试时间&#xff1a;-- 试卷得分&#xff1a;100单选题、单选题(共 20 道试题&#xff0c;共 100 分。) 得分&#xff1a;1001. 若有定义&#xff1a;intw[3][5];&#xff0c;则以下不能正确表示该数组元素…

理解Android Binder机制原理

原文地址&#xff1a; http://blog.csdn.net/universus/article/details/6211589 Binder是Android系统进程间通信&#xff08;IPC&#xff09;方式之一。Linux已经拥有的进程间通信IPC手段包括(Internet Process Connection)&#xff1a; 管道&#xff08;Pipe&#xff09;、信…

嵌入式算法-傅里叶变换算法

摘要&#xff1a;傅里叶变换的核心在于&#xff0c;“任何连续周期信号可以由一组适当的正弦曲线组合而成”&#xff0c;在这个基础上对信号的中特定频率的正弦波进行分解或者重组&#xff0c;基于频率方面分析波形。1、傅里叶变换的意义近似周期性的方波&#xff08;橙色&…

磁盘,硬盘,软盘,光盘的区别

计算机存储器分为两大类&#xff1a;内存存储器和外部存储器&#xff08;简称内存或内存条和外存&#xff09;。内存容量小&#xff0c;存取速度快&#xff0c;只能临时保存信息&#xff08;经cup处理后的数据&#xff09;&#xff0c;断电后信息就会消失。外存容量大&#xff…

Server 2008 R2 AD RMS完整部署:AD部署篇

在上一篇里我们完成了基本环境的准备&#xff0c;这一篇主要是讲AD的部署&#xff0c;完成之后我们需要把RMS服务器和两个客户端都加入到域中。好了废话就不说了&#xff0c;首先在我们创建的DC虚机上登录&#xff0c;并对计算机名称进行修改。 完成后先不要忙着重启&#xff0…

WIN2003设完C盘权限后终端连不上。

设完权限后不要马上重启&#xff0c;要先测试终端是否可以连接&#xff0c;否则出现以下的错误就麻烦了。事件类型: 错误事件来源: Userenv事件种类: 无事件 ID: 1500日期: 2006-7-5事件: 16:43:57用户: NT AUTHORITY\NETWORK SERVICE计算机: 描述:Windows 不能让您登录&…

简易电子钟c语言程序,(最新整理)基于51单片机的电子钟C语言程序

《(最新整理)基于51单片机的电子钟C语言程序》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《(最新整理)基于51单片机的电子钟C语言程序(9页珍藏版)》请在人人文库网上搜索。1、完整)基于51单片机的电子钟C语言程序(完整)基于51单片机的电子钟C语言程序编辑整理&…

Android启动后icon应用图标不能显示的可能问题

前几天写一个安卓小应用程序&#xff0c;在icon应用图标上我找了半天才找到一个比较满意的图片&#xff0c;但是部署到模拟器上图标却是安卓系统图标。 一开始我以为是模拟器的问题又用真机测试了一下&#xff0c;结果也是系统图标。以前遇到过这种情况&#xff0c;无非是手机…

推荐系列文章:《DotText源码阅读》

DotText源码阅读 作者&#xff1a;shanhe DotText源码阅读(0) DotText源码阅读(1)-调试 DotText源码阅读(2)-工程、数据库表结构 DotText源码阅读(3)-框架配置体系和反序列化 dotText源码阅读(4)--DTO和数据访问 dotText源码阅读(5)--URLreWrite和Handler DotText源码阅读(6) -…

2018-2019-1 20165219 实验三 实时系统

2018-2019-1 20165219 实验三 实时系统 任务一 实验要求 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现wc&#xff08;1&#xff09;服务器(端口号是你学号的后6位)和客户端 客户端传一个文本文件给服务器 服务器返加文本文件中的单词数 客户端 #include<netinet/in…

音视频基础知识大全

今天跟几个朋友聊天&#xff0c;他们问我是不是在腾讯&#xff0c;在腾讯做什么&#xff1f;然后我就说了我做的事情&#xff0c;我说我在腾讯做音频方面的开发&#xff0c;对外的产品主要是腾讯会议。然后他我一个朋友就截图了他的腾讯会议的软件截图过来。音视频是一个很好玩…

读取config文件中的键值

新建个config文件 <?xml version"1.0" encoding"utf-8"?><!-- 注意: 除了手动编辑此文件以外&#xff0c;您还可以使用 Web 管理工具来 配置应用程序的设置。 可以使用 Visual Studio 中的“网站”->“Asp.Net 配置”选项。 设置…