java多用户同时访问和数据库进行交互,如何能够高并发

java多用户同时访问和数据库进行交互,如何能够高并发,第1张

我觉得1万的数据并发量并不大,想oracle数据库,mysql承载这些并发是没有问题的

我觉得,主要的问题在于你GPS是一直在修改的,因为车辆在不断的行驶,这样的话,可能会影响数据库的性能

我觉得,你可以用一个内存行的数据库,比如,redis,用这个来存放GPS信息,redis是基于内存的,读写要比关系数据库速度快(忽略网络因素),你可能要问GPS入库怎么弄,可以做一个定时任务,每隔多少时间来将redis的数据写入到数据库中,当然,redis也支持一些算法,比如LRU,来设置何时将数据同步到数据库

创建一个以JDBC连接数据库的程序,包含7个步骤:

1、加载JDBC驱动程序:

在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过javalangClass类的静态方法forName(StringclassName)实现。

例如:

try{

//加载MySql的驱动类

ClassforName("commysqljdbcDriver");

}catch(e){

Systemoutprintln("找不到驱动程序类,加载驱动失败!");

e();

}

成功加载后,会将Driver类的实例注册到类中。

2、提供JDBC连接的URL

61连接URL定义了连接数据库时的协议、子协议、数据源标识。

61书写形式:协议:子协议:数据源标识

协议:在JDBC中总是以jdbc开始

子协议:是桥连接的驱动程序或是数据库管理系统名称。

数据源标识:标记找到数据库来源的地址与连接端口。

例如:(MySql的连接URL)

jdbc:mysql:

//localhost:3306/testuseUnicode=true&=gbk;

useUnicode=true:表示使用Unicode字符集。如果设置为

gb2312或GBK,本参数必须设置为true。=gbk:字符编码方式

3、创建数据库的连接

61要连接数据库,需要向javasql请求并获得Connection对象,该对象就代表一个数据库的连接。

61使用的(Stringurl,Stringusername,Stringpassword)方法传入指定的欲连接的数据库的路径、数据库的用户名和

密码来获得。

例如:

//连接MySql数据库,用户名和密码都是root

Stringurl="jdbc:mysql://localhost:3306/test";

Stringusername="root";

Stringpassword="root";

try{

Connectioncon=

(url,username,password);

}catch(se){

Systemoutprintln("数据库连接失败!");

se();

}

4、创建一个Statement

61要执行SQL语句,必须获得javasqlStatement实例,Statement实例分为以下3

种类型:

1、执行静态SQL语句。通常通过Statement实例实现。

2、执行动态SQL语句。通常通过实例实现。

3、执行数据库存储过程。通常通过实例实现。

具体的实现方式:

Statementstmt=con();

PreparedStatementpstmt=conprepareStatement(sql);

CallableStatementcstmt=

conprepareCall("{CALLdemoSp(,)}");

5、执行SQL语句

Statement接口提供了三种执行SQL语句的方法:executeQuery、executeUpdate

和execute

1、ResultSetexecuteQuery(StringsqlString):执行查询数据库的SQL语句

,返回一个结果集(ResultSet)对象。

2、intexecuteUpdate(StringsqlString):用于执行INSERT、UPDATE或

DELETE语句以及SQLDDL语句,如:CREATETABLE和DROPTABLE等

3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的

语句。

具体实现的代码:

ResultSetrs=stmtexecuteQuery("SELECTFROM");

introws=stmtexecuteUpdate("INSERTINTO");

booleanflag=stmtexecute(Stringsql);

6、处理结果

两种情况:

1、执行更新返回的是本次 *** 作影响到的记录数。

2、执行查询返回的结果是一个ResultSet对象。

61ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些

行中数据的访问。

61使用结果集(ResultSet)对象的访问方法获取数据:

while(rsnext()){

Stringname=rsgetString("name");

Stringpass=rsgetString(1);//此方法比较高效

}

(列是从左到右编号的,并且从列1开始)

7、关闭JDBC对象

*** 作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声

明顺序相反:

1、关闭记录集

2、关闭声明

3、关闭连接对象

if(rs!=null){//关闭记录集

try{

rsclose();

}catch(SQLExceptione){

eprintStackTrace();

}

}

if(stmt!=null){//关闭声明

try{

stmtclose();

}catch(SQLExceptione){

eprintStackTrace();

}

}

if(conn!=null){//关闭连接对象

try{

connclose();

}catch(SQLExceptione){

eprintStackTrace();

}

}

1增加\x0d\String s1="insert into tableNames (id,name,password) values(myseqnextval,,);"\x0d\ClassforName(driver);\x0d\Connection conn = DriverManagergetConnection(url,dbUser,dbPwd);\x0d\PreparedStatement prepStmt = connprepareStatement(s1);\x0d\prepStmtsetString(1,name);\x0d\prepStmtsetString(2,password);\x0d\ResultSet rs=stmtexecuteUpdate();\x0d\2、删除\x0d\String s2="delete from tbNames where name=";\x0d\ClassforName(driver);\x0d\Connection conn = DriverManagergetConnection(url,dbUser,dbPwd);\x0d\PreparedStatement prepStmt = connprepareStatement(s2);\x0d\prepStmtsetString(1,name);\x0d\ResultSet rs=stmtexecuteUpdate();\x0d\3、修改\x0d\String s3=“update tbNames set name= where id=”;\x0d\ClassforName(driver);\x0d\Connection conn = DriverManagergetConnection(url,dbUser,dbPwd);\x0d\PreparedStatement prepStmt = connprepareStatement(s3);\x0d\prepStmtsetString(1,name);\x0d\prepStmtsetString(2,id);\x0d\ResultSet rs=stmtexecuteUpdate();\x0d\4、查询\x0d\String s4="select id,name,password from tbNames";\x0d\ClassforName(driver);\x0d\Connection conn = DriverManagergetConnection(url,dbUser,dbPwd);\x0d\Statement stmt=conncreateStatement();\x0d\ResultSet rs = stmtexecuteQuery(s4);\x0d\while(rsnext){\x0d\int id=rsgetInt(1);\x0d\String name = rsgetString(2);\x0d\String pwd=rsgetString(3);\x0d\Systemoutprintln(id+name+pwd); } \x0d\\x0d\以上四步必须都得关闭连接;!!!\x0d\rsclose();\x0d\stmtclose();\x0d\connclose();

Java 语言是Sun MicroSystems 公司于 年正式命名并推出的一种面向对象的编程语言 OOP(abbr Object Oriented Programming) Sun 公司说 Java 程序设计 语言被设计成是 by programmers for programmers 其随着 Internet 的发展而广为流行 用它开发的系统 一次开发 到处运行 的特色以及程序开发设计时所体现出的面向对象的思想深深地触动着人们 它的语言简洁 集多种程序设计语言之大成 且面向对象 具有可移植性 分布性 安全性 高性能等特色 Java在向Internet/Intranet 甚至计算机世界的各个领域渗透 慢慢改变着人们的思维 而今Internet 热浪一浪高过一浪 从外部世界走向企业内部形成Intranet 促进了Java 技术的利用开发 计算机业界中的IBM ORACAL APPLE Sun Netscape五家公司还联合推出 网络计算机(NC ) 规范 抛开 Wintel 臃肿不堪的体系结构 使用户端价格低廉 易于使用 并成为能够连接网络的简单计算机 NC(Neork Computer) 即所说的 瘦客户 机 NC 支持Java 虚拟机(JVM) 能够运行Java开发的应用程序(Application)和小程序(Applet)并支持多媒体应用 NC 和Java 的结合诞生了新的时代 网络计算机时代 就连Sun的冤家对头Microsoft的比尔 盖茨也不得不承认 Java是长时间以来最卓越的程序设计语言 一 Java 数据库基础 JDBC API Java语言在数据库应用方面 特别在基于Web 的B/S结构的在线数据库应用方面的烦琐复杂配置等 并不能使用户和程序开发双方都十分满意 SunSoft虽提供了用Java语言编写成的Java与数据库的接口规范JDBC(Java DataBase Connectivity 而JavaSoft说JDBC并不代表什么) 使Java程序可以通过统一标准规范的JDBC API来与不同的数据库通信 确保了 %纯Java 的解决方案 JDBC API 定义了Java中的类和接口 表示数据库连接 SQL 指令 结果集合等 它允许Java程序员发送SQL 指令并处理结果 JDBC API 提供两种主要接口 一是面向开发人员的java sql程序包 使得Java程序员能够进行数据库连接 执行SQL查询 并得到结果集合 Java 的java sql包提供了 个类和 个接口 下文将介绍 另一是面向底层数据库厂商的JDBC Drivers 目前为止 Java 的JDBC Drivers仅提供下述四种类型的数据库驱动方式 且各有利弊 ( ) JDBC ODBC bridge plus ODBC driver 方式 JDBC ODBC 桥接方式利用微软的开放数据库互连接口(ODBC API)同数据库服务器通讯 客户端计算机首先应该安装并配置ODBC driver 和JDBC ODBC bridge两种驱动程序 这是Applets访问你的数据库最可能的解决方式 但这对Internet 和Intranet 用户而言简直是一个非常令人讨厌和麻烦的解决方案 ( ) Native API partly Java driver方式 这种驱动方式将数据库厂商的特殊协议转换成Java代码及二进制类码 使Java 数据库客户方与数据库服务器方通信 例如 Oracle用SQLNet协议 DB 用IBM 的数据库协议 数据库厂商的特殊协议也应该被安装在客户机上 这也是令人讨厌和麻烦的解决方案 ( ) JDBC Net pure Java driver方式 这种方式是纯Java driver 数据库客户以标准网络协议(如>

JDBC由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序。然而各个开发商的接口并不完全相同,所以开发环境的变化会带来一定的配置变化。本文主要集合了不同数据库的连接方式。

一、连接各种数据库方式速查表

下面罗列了各种数据库使用JDBC连接的方式,可以作为一个手册使用。

1、Oracle8/8i/9i数据库(thin模式)

ClassforName("oraclejdbcdriverOracleDriver")newInstance();

String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID

String user="test";

String password="test";

Connection conn= DriverManagergetConnection(url,user,password);

2、DB2数据库

ClassforName("comibmdb2jdbcappDB2Driver ")newInstance();

String url="jdbc:db2://localhost:5000/sample"; //sample为你的数据库名

String user="admin";

String password="";

Connection conn= DriverManagergetConnection(url,user,password);

3、Sql Server70/2000数据库

ClassforName("commicrosoftjdbcsqlserverSQLServerDriver")newInstance();

String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";

//mydb为数据库

String user="sa";

String password="";

Connection conn= DriverManagergetConnection(url,user,password);

4、Sybase数据库

ClassforName("comsybasejdbcSybDriver")newInstance();

String url =" jdbc:sybase:Tds:localhost:5007/myDB";//myDB为你的数据库名

Properties sysProps = SystemgetProperties();

SysPropsput("user","userid");

SysPropsput("password","user_password");

Connection conn= DriverManagergetConnection(url, SysProps);

5、Informix数据库

ClassforName("cominformixjdbcIfxDriver")newInstance();

String url = "jdbc:informix-sqli://123456789:1533/myDB:INFORMIXSERVER=myserver;

user=testuser;password=testpassword"; //myDB为数据库名

Connection conn= DriverManagergetConnection(url);

6、MySQL数据库

ClassforName("orggjtmmmysqlDriver")newInstance();

String url ="jdbc:mysql://localhost/myDBuser=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"

//myDB为数据库名

Connection conn= DriverManagergetConnection(url);

7、PostgreSQL数据库

ClassforName("orgpostgresqlDriver")newInstance();

String url ="jdbc:postgresql://localhost/myDB" //myDB为数据库名

String user="myuser";

String password="mypassword";

Connection conn= DriverManagergetConnection(url,user,password);

8、access数据库直连用ODBC的

ClassforName("sunjdbcodbcJdbcOdbcDriver") ;

String url="jdbc:odbc:Driver={MicroSoft Access Driver (mdb)};DBQ="+applicationgetRealPath("/Data/ReportDemomdb");

Connection conn = DriverManagergetConnection(url,"","");

Statement stmtNew=conncreateStatement() ;

以上就是关于java多用户同时访问和数据库进行交互,如何能够高并发全部的内容,包括:java多用户同时访问和数据库进行交互,如何能够高并发、java中简述使用JDBC完成数据库 *** 作的基本步骤(简述采用jdbc访问数据库的步骤)、怎样编写一个java程序能通过jdbc访问数据库实现对数据库的插入、删除、修改和查询等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://www.outofmemory.cn/sjk/10205320.html

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

发表评论

登录后才能评论

评论列表(0条)

保存