php+mysql:为什么从mysql数据库内读取图片显示很慢?

php+mysql:为什么从mysql数据库内读取图片显示很慢?,第1张

数据库的优化涉及三个方面,一是你的程序怎么写的,二是数据库结构怎么设计,三是你的数据库情况怎样(数量、差异规则)。

一般说来,如果你是数据较多,必须建立合理的索引,而且查询语句要按照索引来查询。

而从数据库里面获取图片并显示的基本方式,我想只有一种模式,只要你能显示就不存在错误。当然你可以贴出代码大家看看。

补充:

恐怕你上面的语句是简化了的,而且把关键部分简化掉了,完全相当于没有贴。你下面这个语句:

$result=mysql_query("select

*

from

image",$conn)

里面应该有一个类似where

id=$id这样的条件,然后把id字段设置为主键,速度可以提高数十倍,除非你表里面只有一条记录。

Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。

SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。92HeZu网全部双线合租空间均可使用Access数据库,同时也支持SQL Server。SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制。

SQL Server 特点:

1.真正的客户机/服务器体系结构。

2.图形化用户界面,使系统管理和数据库管理更加直观、简单。

3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。

4.SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与microsoft BackOffice产品集成。

5.具有很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用。

6.对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。

7.SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。

MySQL是一个开放源码的小型关系型数据库管理系统,开发者为瑞典MySQL AB公司,92HeZu网免费赠送MySQL。目前MySQL被广泛地应用在Internet上的中小型网站中。提供由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库

MySQL特点:

1.MySql的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。

2.MySql可运行在不同的 *** 作系统下。简单地说,MySql可以支持Windows95/98/NT/2000以及UNIX、Linux和SUN OS等多种 *** 作系统平台。

3.MySql有一个非常灵活而且安全的权限和口令系统。当客户与MySql服务器连接时,他们之间所有的口令传送被加密,而且MySql支持主机认证。

4.MySql支持ODBC for Windows。MySql支持所有的ODBC 2.5函数和其他许多函数,这样就可以用Access连接MySql服务器,从而使得MySql的应用被大大扩展。

5.MySql支持大型的数据库。虽然对于用Php编写的网页来说只要能够存放上百条以上的记录数据就足够了,但MySql可以方便地支持上千万条记录的数据库。

6.MySql拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性。

7.强大的查询功能。MySql支持查询的SELECT和WHERE语句的全部运算符和函数,并且可以在同一查询中混用来自不同数据库的表,从而使得查询变得快捷和方便。

8.PHP为MySql提供了强力支持,PHP中提供了一整套的MySql函数,对MySql进行了全方位的支持。

图片是二进制字段数据(文件)

20.数据库存入二进制字段数据

/*

using System.Data

using System.IO

using System.Data.SqlClient

*/

private string File=""

if(openFileDialog1.ShowDialog()==DialogResult.OK)

{

pictureBox1.Image=new Bitmap(openFileDialog1.FileName)

FileName=openFileDialog1.FileName

}

try{

DataSet ds=new DataSet()

sqlDataAdapter1.Fill(ds,%%1)//"db"

DataTable MyTable=ds.Tables[0]

DataRow MyRow=MyTable.Rows.Count+1

MyRow[%%2]=MyTable.NewRow()//"id"

MyRow[%%3]=%%5//"FileName"

MyRow[%%4]=%%6//"Description"

FileStream fs=new FileStream(FileNmae,FileMode.OpenOrCreate,FileAccess.Read)

byte[] MyData=new byte[fs.Length]

fs.Read(MyData,0,(int)fs.Length)

MyRow[%%7[=MyData//"FileData"

MyTable.Rows.Add(MyRow)

sqlDataAdapter1.Update(ds,%%1)

ds.AcceptChanges()

//存储成功

}

catch(Exception ex)

{

//ex.Message.ToString()

}

21.数据库取出二进制字段数据

/*

using System.Data

using System.IO

*/

private int index=1

private System.Windows.Forms.BindingManagerBase_Bind()

private DataSet ds=new DataSet()

sqlDataAdapter1.Fill(ds,%%1)//"db"

_Bind=BindingContext[ds,%%1]

textBox1.DataBindings.Add("Text",ds,"%%1.%%3")//filename

textBox2.DataBindings.Add("Text",ds,"%%1.%%4")//description

if(_Bind.Count!=0)

{

try{

if(pictureBox1.Image!=null)

pictureBox1.Image.Dispose()

pictureBox1.Image=null

sqlDataAdapter1.SelectCommand.CommandText="Select * From %%1 Where %%2="+Convert.ToString(index)//id

DataSet dataSet=new DataSet()

sqlDataAdapter1.Fill(dataSet,%%1)

byte[] MyData=(byte[])dataSet.Tables[0].Rows[0][%%5]//"FileData"

Int32 size=MyData.GetUpperBound(0)

FileStream fs=new FileStream(%%6,FileMode.OpenOrCreate,FileAccess.Wrtie)//"temp.bmp"

fs.Write(MyData,0,size+1)

fs.Close()

pictureBox1.Image=new Bitmap(%%6)

}

catch(Exception ex)

{

//ex.Message.ToString()

}

}

22.批量执行SQL和存储过程

/// <summary>

/// 储存过程->删除

/// </summary>

/// <param name="id"></param>

/// <returns></returns>

public DataTable GetTable(int id)

{

DataTable dt = new DataTable()

SqlConnection con = new SqlConnection("server=.database=masterUser id=sapwd=sa")

SqlCommand com = new SqlCommand("proc_Shoping", con)//连接数据库执行存储过程

com.CommandType = CommandType.StoredProcedure

//执行存储过程

SqlDataAdapter da = new SqlDataAdapter(com)

SqlParameter param//添加一个输入参数

param = new SqlParameter("@id", SqlDbType.Int)//设置类型为输入类型 ,并传入参数

param.Direction = ParameterDirection.Input

param .Value= id//当前参数的值

param.Value =10

com.Parameters.Add(param)//将设置好的sqlparameter对象添加到da中

da.Fill(dt)

return dt//返回Datatable

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6423568.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-21
下一篇 2023-03-21

发表评论

登录后才能评论

评论列表(0条)

保存