WebGIS开发实习(一)——数据库连接
来源:互联网 发布:算法艺术与信息学竞赛 编辑:程序博客网 时间:2024/06/05 04:02
本文讲解基于java语言的后台数据库的基本操作方法,为前端网络开发部署打好基础。数据库操作主要分为有增改查删,操作方式主要是通过对应的SQL语句来实现,因此,在介绍时,笔者不按照具体的操作来介绍,而是按照数据库运作的基本流程来介绍。
1.数据库基本操作流程
数据库的基本操作流程为:数据库连接、SQL语句设置、数据结果处理、数据库连接断开。以下以一个简短的代码来介绍基本流程。
import java.sql.*;public class test{ public static void main(String args[]){ String url = "jdbc:postgresql://localhost:5432/WebGIS"; //数据库资源信息 String user = "postage"; //用户名 String password = "WHU(2014)"; //密码 String sql = "" //sql语句 Connection con; Statement st; ResultSet rs; try{ Class.forName("org.postgresql.Driver").newInstance(); con = DriverManager.getConnection(url, "postgres", "WHU(2014)"); st = con.createStatement(); //创建查询集 rs = st.executeQuery(sql); //生成结果集 /* 以下为数据结果处理*/ /*以上为数据结果处理*/ st.close(); rs.close(); con.close(); //关闭数据集 }catch(Exception e){ System.out.print(e.getMessage()); } }}
2.数据结果集的读取
在嵌入式的SQL语言中,宿主语言的读取的SQL的查询结果都是以游标的形式进行存储的,java语言也不例外。游标数据集的读取,需要通过不断的移动游标,将结果输出,或者存储到对应的变量中。以下是示例代码段:
try{ while(rs.next() != false){ //注意,这里返回的是布尔值 id = rs.getInt(indexID); name = rs.getString(indexName); data = rs.getDouble(indexData); //rs可以返回多种数据类型的值,其参数可以是字段的序号,也可以使是字段的名称 }}catch(Exception e){ System.out.print(e.getMessage());}
3.数据集的元数据
通过以上介绍,读取简单的数据库并输出相信已经不成问题了。但是,在实际编程过程中,我们无法提前知道结果集中到底有什么字段,甚至,我们可能不知道这些字段的类型到底是什么,在这种情况下,上述方法便束手无策了。因此,我们需要让我们的程序更加灵活,在此,便介绍如何使用数据结果集的元数据来增强程序的灵活性的方法。
元数据是用来描述数据基本信息的数据。在java中,对数据结果集的元数据的获取十分简单,只用调用一下函数便可:
rs.getMetaData()
该函数返回的类型为ResultSetMetaData,简单介绍一下该类型的一些基本方法。
int getColumnCount() 获取字段个数,返回值为字段个数 int getColumnName(int column) 获取字段名称,参数为字段序号,从1开始 int getColumnType(int column) 获取字段类型,参数为字段序号,返回值为字段的类型号 String getTableName(int column) 获取表名,参数为字段序号,返回值为对应表名
以下为一段示例代码:
try{ int count = rs.getMetaData().getColumnCount(); for(int i=1; i<=count; i++){ rs.getMetaData().getColumnName(i) } while(rs.next()!=false){ for(int i=1; i<=count; i++){ int type = rs.getMetaData().getColumnType(i); switch (type) { case Types.INTEGER: out.print(rs.getInt(i)); break; case Types.VARCHAR: out.print(rs.getString(i)); break; case Types.TIMESTAMP: out.print(rs.getDate(i)); break; case Types.DOUBLE: out.print(rs.getDouble(i)); break; default: break; } }}catch(Exception ex){ System.out.print(ex.getMessage());}
4.SQL语句的一些注意事项
在编写数据库查询的SQL语句时,本人曾遇到过一些问题,在此向大家分享一下。
一是地理数据的读取。本人所使用的postgresql数据库支持地理数据的存储,但是其存储方式是使用二进制代码进行存储,在读取数据时需要将其转化为通用的geojson数据格式。转化方法是使用ST_AsGeoJson函数,示例如下:
select gid, name, ST_AsGeoJson(geom) as geojson from T1
二是对字符串数据的模糊查询,需要注意的是字符串数据在SQL语句中是需要使用单引号标注的,示例如下:
String sql = “select *, ST_AsGeoJson(geom) as geojson from ” + name + ” where ”
+ Field + ” like ” + “’%” + keyword + “%’”;
- WebGIS开发实习(一)——数据库连接
- WebGIS学习(一)——开篇谈WEBGIS
- 润丰:(一)开篇—杂谈WebGIS
- (一)开篇—WebGIS's A B C
- [开发]Python WebGIS开发研究(一)
- 网页电子地图(webgis)系统开发一
- 实习记——(一)稀里糊涂
- 开源WebGIS实施方案(一):开篇
- Webgis开源解决方案之开发环境搭建(一)
- WebGis实践(2)——再谈webContent目录结构
- 实习总结:c#开发之旅(一)winform 基础。
- 实习过程中linux相关开发学习总结(一)
- 程设实习——魔兽世界一
- 实习日志(一)
- 实习感悟(一)
- 实习日志(一)
- 金工实习(一)
- 实习总结(一)
- 喜欢上Cinnamon的10个理由
- [杂题 贪心] BZOJ 2138 stone
- levmar ndk 编译
- PHP 伪静态技术原理以及突破原理实现介绍
- 事务注释@Transactional
- WebGIS开发实习(一)——数据库连接
- Linux ftp 下载文件脚本
- LeetCode 617. Merge Two Binary Trees
- 创建servlet的三种方式
- Java声明变量并赋值
- ActiveMQ(4)
- Leetcode 84. Largest Rectangle in Histogram
- hdu 5461 Largest Point
- 用JS语言编写计算机