
1、看你修改的对应字段吧,如果一个字段是一个表的主键,然后在另外一个表中,该字段却是另外一个表的外键,你修改可能就会出问题;建议你先试验一下,
2、如果数据库表中有数据,你只能定义为空,否则原来的数据,在对应的这个字段上没有值,就会出错;如果数据库表中没有数据,空或者非空都可以;
以上仅供参考
一
得到这个对象的实例Connection
con
;con
=
DriverManagergetConnection(url,userName,password);DatabaseMetaData
dbmd
=
congetMetaData();
二
方法getTables的用法原型:ResultSet
DatabaseMetaDatagetTables(String
catalog,String
schema,String
tableName,String
[]type)此方法可返回结果集合ResultSet
,结果集中有5列,
超出会报越界异常功能描述:得到指定参数的表信息参数说明:参数:catalog:目录名称,一般都为空参数:schema:数据库名,对于oracle来说就用户名参数:tablename:表名称参数:type
:表的类型(TABLE
|
VIEW)注意:在使用过程中,参数名称必须使用大写的。否则得到什么东西。
三
方法getColumns的用法功能描述:得到指定表的列信息。原型:ResultSet
DatabaseMetaData
getColumns(String
catalog,String
schema,String
tableName,String
columnName)参数说明:参数catalog
:
类别名称参数schema
:
用户方案名称参数tableName
:
数据库表名称参数columnName
:
列名称。
四、方法getPrimaryKeys的用法功能描述:得到指定表的主键信息。原型:ResultSet
DatabaseMetaData
getPrimaryKeys(String
catalog,String
schema,String
tableName)参数说明:参数catalog
:
类别名称参数schema
:
用户方案名称参数tableName
:
数据库表名称备注:一定要指定表名称,否则返回值将是什么都没有。
五、方法getTypeInfo()的用法功能描述:得到当前数据库的数据类型信息。
六、方法getExportedKeys的用法功能描述:得到指定表的外键信息。参数描述:参数catalog
:
类别名称参数schema
:
用户方案名称参数tableName
:
数据库表名称。
( 1) 对空间图层的整体 *** 作
空间图层即 map1 layers item( i) 对象,是图元空间数据的集合,具有以下几个重要属性:
1) Visible,设置图层是否可见;
2) Selectable,设置图层上的图元是否可选择;
3) Editable,设置是否可编辑;
4) AutoLabel,设置是否自动标注出图元的名称。
每个属性的值都为布尔型,即 True 或者 False。图层的 Selectable 属性设置为 False 时,通过选择工具将不能选择该图元上的图元,在进行图层编辑时,可以将欲编辑的图层设置为 Selectable = True,Editable = True,然后将其他图层设置为 Selectable = False,Editable =False,以起到数据保护的作用。
需要注意的是,要开始修改图层上的空间数据,只需要设置 Editable = True,但是如果要向图层上新增空间数据,还需要设置 map1 layers InsertionLayer = map1 layers item( i) ,否则会报错。
要根据空间图层来具体得到某个图元,可以根据 GetFeatureByID 和 GetFeatureByKey方法来实现。
当将某图层的 AutoLabel 设置为 True 时,该图层上的图元旁将会自动标注名称,名称的内容来自该图层的第一个字符类型字段的内容。如果需要更改标注内容的字段来源,则需要在 MapInfo Professional 中更改字段的排列顺序。
( 2) 向空间数据库中动态添加数据
为实现图中图功能,必须动态的在地图上添加矩形框,即动态的向空间库添加数据,如下代码可以实现:
Dim ftr As MapXLib Feature
Dim ftrs As MapXLib Features
Dim rctMap As MapXLib Rectangle
Dim pnts As New MapXLib Points
Dim pnt1 As New MapXLib Point
Dim pnt2 As New MapXLib Point
Dim pnt3 As New MapXLib Point
Dim pnt4 As New MapXLib Point
Set rctMap = frmmain Map1 Bounds
pnt1 Set rctMap XMin,rctMap YMax
pnt2 Set rctMap XMax,rctMap YMax
pnt3 Set rctMap XMax,rctMap YMin
pnt4 Set rctMap XMin,rctMap YMin
pnts Add pnt1
pnts Add pnt2
pnts Add pnt3
pnts Add pnt4
pnts Add pnt1
Set ftr = Map1 FeatureFactory CreateLine( pnts,styLine)
Set Map1 Layers InsertionLayer = Map1 Layers Item( " eagle" )
Map1 Layers Item( " eagle" ) AddFeature ftr
Map1 Refresh
( 3) 更新属性库
首先,需要根据图元 ( 空间数据) 来找到它的属性数据,具体代码实现如下:
Dim ftr As MapXLib Feature
Set ftr = Map1 Layers( i) Selection Item( 1)
Dim mydata As MapXLib Dataset
Set mydata = Map1 DataSets Add( miDataSetLayer,lyr)
For j = 1 To mydata Fields Count
If VarType( mydata RowValues( ftr FeatureID) Item( j) value) < > vbNull Then
Grid1 TextMatrix( j + 1,1) = mydata RowValues( ftr FeatureID) Item( j) value
End If
Next j
这样就列出了该图元的属性值,当对属性值做了修改,需要更新到属性库时,则可通过如下代码:
ftr Layer KeyField = Grid1 TextMatrix( i + 1,0)
ftr KeyValue = Grid1 TextMatrix( i + 1,1)ftr Update
需要注意的是,如果在属性库字段设计时,将一个或多个字段定义了索引,则必须保证更新的值为唯一,否则将更新错误,但建库时字段值已经有不唯一,则无论如何都会报错,所以建议不要定义索引。
( 4) 实现对空间数据的复制粘贴
空间对象不同于普通的文本或文件等数据,所以复制粘贴也有其特殊性,通过选择工具选择一个或多个图元,然后选择复制后,需要通过中间对象暂时存储,实现代码如下:
Public m_ oExchangeFtrs As MapXLib Features,必须在公共模块中定义。
Dim oFtr As MapXLib Feature
Dim oLayer As MapXLib Layer
Dim mulflag As Integer
mulflag = 0
煤矿安全地理信息系统设计与开发
这时,将空间对象存储在了 oExchangeFtrs 中,当需要粘贴时,则将 oExchangeFtrs 中的对象添加到空间库和属性库中,实现代码如下:
煤矿安全地理信息系统设计与开发
Next oFtr
If iFtrCount = 0 Then Exit Sub
煤矿安全地理信息系统设计与开发
Next oFtr
oLayer Refresh
Set m_oExchangeFtrs = oLayer Selection
( 5) 属性库导出到 Microsoft Excel
Microsoft Excel 具有强大的表格功能,将属性库中的数据输出到 Microsoft Excel 后,可以进一步执行很多 *** 作,具体实现代码如下:
先在窗体中预览各属性值:
For Each ftr In lyr AllFeatures
If VarType( mydata value( ftr FeatureID,nameid) ) < > vbNull And VarType( mydata value( ftr FeatureID,nameid) ) < > vbEmpty Then
For i = 1 To UBound( selecti)
DoEvents
If VarType( mydata value( ftr FeatureID,selecti( i) ) ) < > vbNull Then
Flex1 TextMatrix( j,i) = mydata value( ftr FeatureID,selecti( i) )
End If
Next i
Flex1 TextMatrix( j,0) = j
j = j + 1
Flex1 Rows = Flex1 Rows + 1
End If
Next
然后与 Microsoft Excel 通信,进行数据交换:
Dim objexcel As excel Application
Dim i As Long
Dim j As Long
If Flex1 Rows = 0 Then
MsgBox " 没有查询结果可以导出! " ,vbInformation
Exit Sub
Else
If MsgBox( " 确实要将结果集导出到 Excel 吗" ,vbYesNo + vbInformation) < > vbYesThen
Exit Sub
End If
Set objexcel = New excel Application
objexcel Workbooks Add
For j = 0 To Flex1 Cols - 1
For i = 0 To Flex1 Rows - 1
objexcel Cells( i + 1,j + 1) = Flex1 TextMatrix( i,j)
Next i
Next j
objexcel Visible = True
objexcel DisplayAlerts = True
End If
主题地图 ( 又称专题地图) 的绘制是根据特定的主题遮蔽地图的过程。主题通常是数据的某个部分或某些部分,可以从数据集获取。主题利用颜色阴影、填充图案、符号或柱状图和饼状图,以可视化的形式显示数据。根据数据中的特定值将这些颜色、图案或符号分配给地图对象,可以创建不同的主题地图。柱状图和饼状图可以对数据集中的每个记录进行数据比较。
主题地图可以使用许多方法来图解数据。最常用的一种主题地图就是气象图。如果显示红色,表示天气很热 ( 气温高) ; 如果显示蓝色,表示天气很冷 ( 气温低) 。通过主题地图绘制还可以发现通过表格数据很难看出来的数据趋势。
在 Themes 集合、Theme 对象和 ThemeProperties 对象中使用属性和方法,可以创建并定义自己的主题遮蔽。Legend 对象存储主题的关键字,说明主题的颜色、形状和大小代表的含义。
MapX 提供了 9 种主题地图,其参数与注释如下:
miThemeRanged: 范围主题;
miThemeBarChart: 柱状图主题;
miThemePieChart: 饼状图主题;
miThemeGradSymbol: 分级符号主题;
miThemeDotDensity: 点密度主题;
miThemeIndividualValue: 个别值主题;
miThemeAuto MapX: “最佳猜测” 主题;
miLabelRangedTheme: 范围标签主题;
miLabelIndividualValuesTheme: 个别标签值主题。
每个主题有自己的用途和唯一的属性。例如,使用 miThemeRanged,可以根据人口密度按主题遮蔽世界地图。可以使用红色的分级阴影遮蔽国家,最深的红色代表人口密度最大的国家,最浅的红色代表人口密度最小的国家,您可以很容易看出世界人口的分布。
使用主题地图绘制并不仅限于显示数字值。标称值也可以按主题遮蔽。例如,若有地下电缆数据集,过去6 个月内尚未使用过的地下电缆将标记为优先状态,使用 miThemeIn-dividualValue 可以根据修复状态遮蔽这些电缆,值相同的所有记录将使用相同颜色遮蔽。
具体的代码实现如下:
Dim ds As MapXLib Dataset
Dim mylayer As MapXLib layer
Set mylayer = frmmain Map1 Layers( Combo1 Text)
Set ds = frmmain Map1 DataSets Add( miDataSetLayer,mylayer," themedata" )
Map1 DataSets Item( " themedata" ) Themes Add themetype,fieldname
'Map1 DataSets Item( " themedata" ) Themes Item( 1) ThemeProperties NumRanges = 12
主题加入指定集合后,将创建 Theme 对象,可以处理对象的各个属性。对巷道图层,可以做瓦斯大小范围图和人员分布范围图,对通风系统图,可做风量大小范围图等。
思路:你先建立数据库连接:连接数据库的方式你应该会吧。不会在网上查一下,获取连接后:拿到连接对象:如下:
Connection conn = DriverManagergetConnection(url,userName,password);
//实现关于数据库的整体综合信息对象:如下:
javasqlDatabaseMetaData dbmd=conngetMetaData();
//获取数据库相关的信息,
Systemoutprintln("数据库产品名: "+dbmdgetDatabaseProductName());
Systemoutprintln("数据库是否支持事务: "+dbmdsupportsTransactions());
Systemoutprintln("数据库产品的版本号:"+dbmdgetDatabaseProductVersion());
//获取全表相关的信息
ResultSet tSet=dbmdgetTables(null,"%","%",newString[]{"TABLE","VIEW"})
while(tSetnext()){
Systemoutprintln(tSetgetRow()+"_表类别:"+tSetgetString("TABLE_CAT")+"_表模式:"+tSetgetString ("TABLE_SCHEM")+"_表名称:"+tSetgetString("TABLE_NAME")+"_表类型:"+tSetgetString("TABLE_TYPE")
}
//获取表的主键列信息;
ResultSetprimaryKey=dbmdgetPrimaryKeys("MANOR","PUBLIC","SYS_ROLE_RES");
while(primaryKeynext()){
Systemoutprintln("表名:"+primaryKeygetString("TABLE_NAME")+",列名:"+primaryKeygetString("COLUMN_NAME")
+" 主键名:"+primaryKeygetString("PK_NAME"));
//其中表名:SYS_ROLE_RES,
}
//获取表的外键列信息"
ResultSet foreinKey=dbmdgetImportedKeys("MANOR","PUBLIC","SYS_ROLE_RES");
while(foreinKeynext()){
Systemoutprintln("主键名:"+foreinKeygetString("PK_NAME")+",外键名:"+foreinKeygetString("FKCOLUMN_NAME")
+",主键表名:"+foreinKeygetString("PKTABLE_NAME")+",外键表名:"+foreinKeygetString("FKTABLE_NAME")
+",外键列名:"+foreinKeygetString("PKCOLUMN_NAME")+",外键序号:"+foreinKeygetString("KEY_SEQ"));
}
相获取更多SQL参数,可参考数据库相关方面的教材。
以上就是关于我是个新手,问一个SQL的问题,求大神解答全部的内容,包括:我是个新手,问一个SQL的问题,求大神解答、怎么用java编写将数据库同一属性的内容提取出来并建立成一个表、对空间数据与属性数据的 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)