怎样实现"图形和数据库"的对应

怎样实现"图形和数据库"的对应,第1张

那就把路径也存入数据库做为一个字段,读取的路径然后显示出来,alt写入属性就可以了。

或者所有安装一个固定的方法命名,比如Img_01jpg,用脚本就可以区分了。

faultTableModel dt=new DefaultTableModel();//先定义一个Model

……

……

try{

ClassforName( "" );//写数据库的驱动,

Connection con = DriverManagergetConnection(url, username, password );//连接数据库的

Statement sta = concreateStatement();

ResultSet rs=staexecuteQuery("……");//里面写要显示的SQL语句

ResultSetMetaData rsmd = rsgetMetaData();

int numberOfColumns=rsmdgetColumnCount();

//以下是显示数据库中的列名的代码

int b=1;

while(b=numberOfColumns) {

dtaddColumn(rsmdgetColumnName(b));

b ;

}

//以下是在表格中显示数据中的内容

while(rsnext()) {

Vector newRow=new Vector();

int c=1;

while(c=numberOfColumns) {

newRowaddElement(rsgetString(c));

c ;

}

dtaddRow(newRow);

}

}catch(Exception ex){};

一般将NoSQL数据库分为四大类:键值(Key-Value)存储数据库、列存储数据库、文档型数据库和图形(Graph)数据库。它们的数据模型、优缺点、典型应用场景。

键值(Key-Value)存储数据库Key指向Value的键值对,通常用hash表来实现查找速度快数据无结构化(通常只被当作字符串或者二进制数据)内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等。

列存储数据库,以列簇式存储,将同一列数据存在一起查找速度快,可扩展性强,更容易进行分布式扩展功能相对局限分布式的文件系统。

文档型数据库,Key-Value对应的键值对,Value为结构化数据,数据结构要求不严格,表结构可变(不需要像关系型数据库一样需预先定义表结构),查询性能不高,而且缺乏统一的查询语法,Web应用。

图形(Graph)数据库,图结构,利用图结构相关算法(如最短路径寻址,N度关系查找等),很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案,社交网络,推荐系统等。

什么叫驱动?

我做电子地图是这么做的,SQL存储顶点坐标,落点坐标点的值和该区域的基本信息。然后SQL查询就能筛选一个坐标范围。

窗体上拖个PictrueBox存放CAD,用CAD图鼠标点击的坐标就可以去查询数据库了。从而模拟了一个电子地图的效果,我从来不用电子地图第三方控件。

第一个过程描坐标:建立数据库表,比如一个长方形区域,起点坐标应该是他左上角,X轴,Y轴都是起始位置,落点坐标应该是右下脚,所以在数据库中除了存储这个区域的基本信息外还要存储四个基本值X起始值、X落点、Y起始、Y落点。

获得这些值不是靠你去计算,必须写一个外挂程序,通过鼠标点击PictrueBox捕捉起点和落点坐标,然后分别更新查询到数据表,才能准确地记录每个区域的坐标值。表的格式如下:

区域名称 | 区域基本信息 | X起点 | Y起点 | X落点 |Y落点 | 图索引

---------------------------------------------------------------------------------------------

A区 | 办公区域 | 80 | 20 | 140 | 50 | 图1

-------------------------------------------------------------------------------------------

当基础资料表建立以后,再建立SQL视图,用一个鼠标点做条件检索数据库:

假如捕捉点为(X,Y),程序中公开两个变量Public int X,Y;

Select from 基本资料 where X起点<=X and X落点>=X and Y起点<=Y and Y落点>=Y;

这样通过PictrueBox读取CAD图,描坐标的方法就能用图形范围坐标位置检索小范围信息。

你可以通过鼠标点击来完成,也可以通过鼠标双击缩放图形,拖动,使用Graph类在上面画图形,遍历数据库,通过区域名称索引也可以,给坐标范围着色。

你没有说清是什么数据库,先说说access吧。

如何从ACCESS数据库中读取images

1。ACCESS和FoxPro数据库中的图形格式

当浏览器遇到一个<IMG>标志时,它会根据你设定的src属性来下载文件。

这可能是一个图形文件或则是一个ASP页面。

如果是一个返回gif二进制的ASP页面

浏览器需要知道返回的是什么格式的图形文件

因为这个原因,就需要指定content type,为image/gif,image/bmp

image/jpeg或则其他什么的。

ResponsecontentType = "image/gif"

但这会导致另外一个问题,那就是我们只能够显示gif格式的图象,

或则说保存在数据库中的东西只能够是gif格式的了。

但是一些数据库是使用gif格式保存的,但是另外一些则是使用

jpeg格式保存的,甚至其他是采用OLE方式来保存图形的。

所以我们必须根据图形的格式来设置response的content type

注意的是你也可以从一个文件中新建一个位图对象,但使用这样

的方式保存在数据库中的图形格式是浏览器不能够识别的。

当你往数据库中保存图象时,你应该知道你需要使用什么格式来保存

你可以把文件中的每一个字节保存下来,或则通过ACCESS/Foxpro的把图形保存

为一个OLE格式。

你使用什么格式保存图象决定了你在ASP中用什么格式来读出图形来。

具体来说,如果你在ACCESS/FoxPro中将图形保存为bmp,gif,jpeg(

这个必须要使用到ACCESS/FoxPro的OLE对象,即使用ACCESS的插入对象

对话框来完成),这是当你使用

image/bmp时浏览器是不能够解释的。

现在假设在数据库中保存的是你所想要的图形格式

(GIF, JPEG, BMP, TIFF, 等)现在来看看要怎么把它们从

数据库中读出来。

在ACCESS中使用了两个关键的技术来保存图形

1。使用了bmp格式

2。78个字节的文件头

<%

responseExpires = 0

responseBuffer = True

responseClear

responsecontentType = "image/bmp"

%>

接着你要干的就是去掉那78个字节的OLE对象的文件头。

<%

Const OLEHEADERSIZE = 78

nFieldSize = rs("photo")ActualSize

oleHeader = rs("photo")GetChunk(OLEHEADERSIZE)

imageBytes = rs("photo")GetChunk(nFieldSize - OLEHEADERSIZE)

ResponseBinaryWrite imageBytes

%>

现在举一个例子:

如果你要得到一个职工的信息,这段信息包括一个介绍和他的图象。

并且要同时显示文字和图形。

代码如下:(其中的theImg是一个代理页面)

theImgasp

<%

responseExpires = 0

responseBuffer = True

responseClear

responsecontentType = Session("ImageType")

responseBinaryWrite Session("ImageBytes")

Session("ImageType") = ""

Session("ImageBytes") = ""

responseEnd

%>

Function SetImageForDisplay(field, contentType)

OLEHEADERSIZE = 78

contentType = LCase(contentType)

select case contentType

case "gif", "jpeg", "bmp"

contentType = "image/" & contentType

bytes = fieldvalue

case "ole"

contentType = "image/bmp"

nFieldSize = fieldActualSize

oleHeader = fieldGetChunk(OLEHEADERSIZE)

bytes = fieldGetChunk(nFieldSize - OLEHEADERSIZE)

end select

Session("imageBytes") = bytes

Session("imageType") = contentType

End Function

'注意的是,程序中只使用了4中格式:gif, jpeg, bmp , ole

<%

sql = "select from Employees"

Set oRS = ServerCreateObject("ADODBRecordset")

oRSCursorLocation = 3

oRSOpen sql, "DSN=NW"

SetImageForDisplay oRS("photo"), "ole"

Set oRSActiveConnection = Nothing

%>

要显示图象的话,只需要在另外一个asp中,假设为getEmpInfoasp中

<img src="theImgasp"</img>

但这还有一个问题,因为对每个职工的图形都使用了同一个"theImgasp"

文件,应该再小小修改一下:

<img src="theImgasptemp=<%= RequestForm("empLastName")%>"</img>

最后再说一点,如何显示多幅图象呢?

也就是说如果数据库中有多个字段都保存了图形,怎么办?

其实解决办法很简单,只要给SetImageForDisplay多加一个参数

就是用来保存图形的一个session变量。

例如:

SetImageForDisplay oRS1("photo"), "ole", "empPhoto"

SetImageForDisplay oRS2("logo"), "gif", "compLogo"

<img src="theImg2aspvarName=empPhoto&temp=<%= RequestForm("empLastName")%>">

<img src="theImg2aspvarName=compLogo&temp=<%= RequestForm("imgCode")%>">

使用这个方法能够完成下面的功能:

1。能够从数据库中取出图形字段。(你唯一需要知道的是数据库中的图形是什么格式

bmpgifjpegole)

2采用session变量 来保存图形的字节数和content type

asp需要这些信息来联结到<IMG>中的属性

3。只要把theImg放到你想显示图形的地方,就能够显示图象了

以上就是关于怎样实现"图形和数据库"的对应全部的内容,包括:怎样实现"图形和数据库"的对应、将Oracle数据库查询出的数据图形显示出来、nosql数据库的四种类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存