提及数据库类型,人们先想到的是SQL,不过随着大规模数据集合多重数据种类带来的挑战,NoSQL应运而生。专业人士分析,随着云计算、物联网以及大数据的进一步发展,NewSQL将成为未来数据库的主角。
SQL
SQL是Structured Query Language(结构化查询语言)的缩写,是传统的关系型数据库、数据库领域主流模型,经典应用在金融和电信行业,确保数据库的数据不会出错和丢失。而SQL是专为数据库而建立的 *** 作命令集,是一种功能齐全的数据库语言。SQL功能强大、简单易学、使用方便,已经成为了数据库 *** 作的基础,并且现在几乎所有的数据库均支持SQL。
NoSQL
NoSQL泛指非关系型的数据库,它的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。NoSQL的强项是特别适合处理大量分布式数据,与传统的关系型数据库相比,NoSQL数据库为软件开发人员及其他用户提供了更快的速度和更高的灵活性。目前在市场上有超过24个开源和商业NoSQL数据库。
NewSQL
NewSQL是指一类新式的关系型数据库系统,针对OLTP(读-写)工作负载,追求提供和NoSQL系统相同的扩展性能,且仍然保持ACID和SQL等特性。对企业而言,使用NewSQL不仅免去传统数据仓库的ETL过程,降低存储成本的同时极大的缩短数据分析的延迟,使得实时分析决策系统成为可能。
MySQL
优点:
体积小、速度快、总体拥有成本低,开源;
支持多种 *** 作系统;
是开源数据库,提供的接口支持多种语言连接 *** 作 ;
SqlServer
优点:
易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等;
Oracle
优点:
开放性: Oracle 能所有主流平台上运行(包括 windows)完全支持所有工业标准采用完全开放策略使客户选择适合解决方案对开发商全力支持。
可伸缩性,并行性:oracle 并行服务器通过使组结点共享同簇工作来扩展windownt能力提供高用性和高伸缩性簇解决方案windowsNT能满足需要用户把数据库移UNIXOracle并行服务器对各种UNIX平台集群机制都有着相当高集成度。
以上我的回答希望对你有所帮助
创建一个以JDBC连接数据库的程序,包含7个步骤:
1、加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),
这通过javalangClass类的静态方法forName(String className)实现。
例如:
try{
//加载MySql的驱动类
ClassforName("commysqljdbcDriver") ;
}catch(ClassNotFoundException e){
Systemoutprintln("找不到驱动程序类 ,加载驱动失败!");
eprintStackTrace() ;
}
成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL
•连接URL定义了连接数据库时的协议、子协议、数据源标识。
•书写形式:协议:子协议:数据源标识
协议:在JDBC中总是以jdbc开始
子协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端口。
例如:(MySql的连接URL)
jdbc:mysql:
//localhost:3306/testuseUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
3、创建数据库的连接
•要连接数据库,需要向javasqlDriverManager请求并获得Connection对象,
该对象就代表一个数据库的连接。
•使用DriverManager的getConnectin(String url , String username ,
String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和
密码来获得。
例如:
//连接MySql数据库,用户名和密码都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManagergetConnection(url , username , password ) ;
}catch(SQLException se){
Systemoutprintln("数据库连接失败!");
seprintStackTrace() ;
}
4、创建一个Statement
•要执行SQL语句,必须获得javasqlStatement实例,Statement实例分为以下3
种类型:
1、执行静态SQL语句。通常通过Statement实例实现。
2、执行动态SQL语句。通常通过PreparedStatement实例实现。
3、执行数据库存储过程。通常通过CallableStatement实例实现。
具体的实现方式:
Statement stmt = concreateStatement() ;
PreparedStatement pstmt = conprepareStatement(sql) ;
CallableStatement cstmt =
conprepareCall("{CALL demoSp( , )}") ;
5、执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate
和execute
1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句
,返回一个结果集(ResultSet)对象。
2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或
DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的
语句。
具体实现的代码:
ResultSet rs = stmtexecuteQuery("SELECT FROM ") ;
int rows = stmtexecuteUpdate("INSERT INTO ") ;
boolean flag = stmtexecute(String sql) ;
6、处理结果
两种情况:
1、执行更新返回的是本次 *** 作影响到的记录数。
2、执行查询返回的结果是一个ResultSet对象。
• ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些
行中数据的访问。
• 使用结果集(ResultSet)对象的访问方法获取数据:
while(rsnext()){
String name = rsgetString("name") ;
String pass = rsgetString(1) ; // 此方法比较高效
}
(列是从左到右编号的,并且从列1开始)
7、关闭JDBC对象
*** 作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声
明顺序相反:
1、关闭记录集
2、关闭声明
3、关闭连接对象
if(rs != null){ // 关闭记录集
try{
rsclose() ;
}catch(SQLException e){
eprintStackTrace() ;
}
}
if(stmt != null){ // 关闭声明
try{
stmtclose() ;
}catch(SQLException e){
eprintStackTrace() ;
}
}
if(conn != null){ // 关闭连接对象
try{
connclose() ;
}catch(SQLException e){
eprintStackTrace() ;
}
}
//此类为连接数据库并进行数据库的 *** 作\x0d\importjavasqlConnection;\x0d\importjavasqlDriverManager;\x0d\importjavasqlResultSet;\x0d\importjavasqlSQLException;\x0d\importjavasqlStatement;\x0d\publicclassConn{\x0d\privatestaticConnectionconn=null;\x0d\privatestaticStatementst=null;\x0d\privatestaticResultSetrs=null;\x0d\//建立数据库的连接\x0d\publicConn(){\x0d\Stringurl="jdbc:sqlserver://localhost:1433;databaseName=ZYGX";\x0d\Stringuser="sa";\x0d\Stringpassword="123";\x0d\try{\x0d\ClassforName("commicrosoftsqlserverjdbcSQLServerDriver");\x0d\conn=DriverManagergetConnection(url,user,password);\x0d\st=conncreateStatement(ResultSetTYPE_SCROLL_INSENSITIVE,ResultSetCONCUR_READ_ONLY);\x0d\}catch(ClassNotFoundExceptione){\x0d\eprintStackTrace();\x0d\}catch(SQLExceptione){\x0d\eprintStackTrace();\x0d\}\x0d\}\x0d\\x0d\//通过不同的sql语句,得到相应Resultset结果集\x0d\publicResultSetgetRs(Stringsql){\x0d\try{\x0d\rs=stexecuteQuery(sql);\x0d\}catch(SQLExceptione){\x0d\eprintStackTrace();\x0d\}\x0d\returnrs;\x0d\}\x0d\//根据不同的sql语句,执行数据库的更新 *** 作\x0d\publicintupdata(Stringsql){\x0d\intnum=0;\x0d\try{\x0d\num=stexecuteUpdate(sql);\x0d\}catch(SQLExceptione){\x0d\eprintStackTrace();\x0d\}\x0d\returnnum;\x0d\}\x0d\//关闭数据库连接相应的资源\x0d\publicvoidclose(){\x0d\try{\x0d\if(rs!=null){\x0d\rsclose();\x0d\rs=null;\x0d\}\x0d\if(st!=null){\x0d\stclose();\x0d\st=null;\x0d\}\x0d\if(conn!=null){\x0d\connclose();\x0d\conn=null;\x0d\}\x0d\}catch(SQLExceptione){\x0d\eprintStackTrace();\x0d\}\x0d\}\x0d\}\x0d\----------------------------------------------------------------------\x0d\//可以对button里添加动作按钮:\x0d\finalJButtonbutton=newJButton();\x0d\buttonaddActionListener(newActionListener(){\x0d\publicvoidactionPerformed(finalActionEvente){\x0d\Connconn=newConn();\x0d\Stringsql1="selectfromaawherename='"+name+"'";//按name值查找\x0d\ResultSetrs=conngetRs(sql1);\x0d\try{\x0d\while(rsnext()){\x0d\intn=rsgetString("type");\x0d\}\x0d\}catch(SQLExceptione){\x0d\eprintStackTrace();\x0d\}\x0d\Stringname=textFieldgetText();\x0d\Stringsql="updateaasettittle='"+name+"'";//从aa表将title字段的值改成textField里的name值\x0d\Stringsql2="deletefromaawherename='"+name+"'";//从aa表将按取得name的值删除该行数据\x0d\Stringsql3="insertintoaa(name,uname)values('"+name+"','"')";//将name,uname值新增到aa表\x0d\if(connupdate(sql)==1){\x0d\Systemoutprint("修改成功");\x0d\}\x0d\if(connupdate(sql2)==1){\x0d\Systemoutprint("删除成功");\x0d\}\x0d\if(connupdate(sql3)==1){\x0d\Systemoutprint("新增成功");\x0d\}\x0d\}\x0d\});
Java程序向数据库中插入数据,代码如下:
//首先创建数据库,(access,oracle,mysql,sqlsever)其中之一,其中access,sqlsever需要配置数据源(odbc);//然后再eclipse中创建类(ConnDb,Test,TestBean)ConnDb功能为连接数据库,查询,插入,删除,修改数据的类,Test为含有main方法的测试类,TestBean为数据表中的字段属性及set,get方法
//以下是ConnDb代码:
package db;
import javasqlConnection;
import javasqlDriverManager;
import
javasqlResultSet;
import javasqlSQLException;
import
javasqlStatement;
import javautilArrayList;
public class ConnDb {
public Connection startConn(Connection conn){
try {
ClassforName("sunjdbcodbcJdbcOdbcDriver");
conn = DriverManagergetConnection("jdbc:odbc:数据库","用户名", "密码");
} catch (Exception e) {
Systemoutprintln("连接数据库时出现错误");
}
return conn;
}
public ArrayList executeQuery(String sql){
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
ArrayList list = new ArrayList();
try {
conn = startConn(conn);
stmt = conncreateStatement();
rs = stmtexecuteQuery(sql);//sql为sql语句例如"select from
表名",从main方法中传进来,这里用的是ArrayList 类将查询结果存储起来
while(rsnext()){
TestBean tb = new TestBean();
tbsetTid(rsgetString("tid"));
tbsetTname(rsgetString("tname"));
tbsetTinfo(rsgetString("tinfo"));
listadd(tb);
}
}
catch (SQLException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}finally{
closeConn(rs,stmt,conn);
}
return list;
}
public void executeUpdate(String sql){
Connection conn = null;
Statement stmt = null;
try {
conn =
startConn(conn);
stmt = conncreateStatement();
stmtexecuteUpdate(sql);
}
catch (SQLException e) {
Systemoutprintln("修改,插入或者删除数据库数据时发生错误!");
}finally{
closeConn(stmt,conn);
}
}
public void closeConn(ResultSet rs,Statement stmt,Connection conn){
try {
if(rs !=
null){
rsclose();
}
if(stmt != null){
stmtclose();
}
if(conn != null){
connclose();
}
}
catch (SQLException e) {
// TODO Auto-generated catch
block
Systemoutprintln("关闭数据库的时候发生错误!");
}
}
public void closeConn(Statement stmt,Connection conn){
try {
if(stmt != null){
stmtclose();
}
if(conn != null){
connclose();
}
}
catch (SQLException e) {
// TODO Auto-generated catch block
Systemoutprintln("关闭数据库的时候发生错误!");
}
}
}
1:引入javasql数据包;
import javasql;
2:加载JDBC驱动程序
ClassforName(JDBC驱动包的名字)newInstance();
3:产生Connection
如已成功加载JDBC驱动程序,就可以利用加载的驱动程序连接数据库
Connection con=DriverManagergetConnection(URL,UserName,Password);
URL: JDBC:(subprotocol):(subname)
subprotocol:子协议指定连接何种数据库或用什么方式连接数据库;
subname:确立一个连接,可以是一个数据源名,也可是指向一个网上数据库
4:各种连接例:
(1) MySQL数据库
String Dirver="commysqljdbcDriver";//驱动程序
String URL="jdbc:mysql://localhost:3306/db_name"; //连接的URL,db_name为数据库名
String UserName="username"; //用户名
String Password="password"; //密码
ClassforName(Driver)newInstance(); //加载数据库驱动
connection con=DriverManagergetConnection(URL,Username,Password);
(2) Microsoft SQL server 数据库
String Driver="commicrosoftjdbcsqlserverSQLServerDriver"; //驱动程序
String URL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_name";
//连接的URL,db_name为数据库
String UserName="username"; //用户名
String Password="password"; //密码
ClassforName(Driver)newInstance();
connection con=DriverManagergetConnection(URL,Username,Password);
(3) sybase 数据库
String Driver="comsybasejdbcsybDriver"; //驱动程序
String URL="jdbc:Sybase://localhost:5007/db_name"; //连接的URL,db_name为数据库
String UserName="username"; //用户名
String Password="password"; //密码
ClassforName(Driver)newInstance();
connection con=DriverManagergetConnection(URL,Username,Password);
(4) Oracle(用thin模式)数据库
String Driver="oraclejdbcdriverOracleDriver"; //驱动程序
String URL="jdbc:oracle:thin://localhost:1521:orcl";
//连接的URL,orcl为数据库的SID
String UserName="username"; //用户名
String Password="password"; //密码
ClassforName(Driver)newInstance();
connection con=DriverManagergetConnection(URL,Username,Password);
(5) 利用JDBC-ODBC桥连接
String Driver="sunjdbcodbcJdbcodbcDriver"; //驱动程序
String URL="jdbc:odbc:dbsource"; //连接的URL,dbsource为数据源名
String UserName="username"; //用户名
String Password="password"; //密码
ClassforName(Driver)newInstance();
connection con=DriverManagergetConnection(URL,Username,Password);
以上就是关于Java中每个数据库的优势是什么全部的内容,包括:Java中每个数据库的优势是什么、java中简述使用JDBC完成数据库 *** 作的基本步骤。、在Java中如何对数据库中的数据进行 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)