Ⅰ java web项目中的数据库连接
首先你要检查你的数据库的端口号是否正确,接下来你要确定项目中是否导入数据连接的jar包,再接着就是看你连接的数据库sqlserver是否开启,数据表是否存在于数据库中,最后看你的数据库账号,密码是否设置正确
Ⅱ 做了一年多J2EE开发,感觉java web就是数据库的一些操作,大家有没有这个感觉啊,java web就是数据库操作
回答正确,就是对数据的增删改查。不光java web基本上所有程序都是以对数据的增删改查为基本的。但是用户不会去看你的数据。你是程序猿你可以去看数据库,但是用户不会。咱需要把数据翻译成客户能看的懂,看的舒服的方式去展现给客户
Ⅲ 在java web中怎样将数据存储在数据库中
Java可以使用JDBC对数据库进行读写。JDBC访问一般分为如下流程:
1、加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),
这通过java.lang.Class类的静态方法forName(String className)实现。
例如:
try{
//加载MySql的驱动类
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驱动程序类 ,加载驱动失败!");
e.printStackTrace() ;
}
成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL
?连接URL定义了连接数据库时的协议、子协议、数据源标识。
?书写形式:协议:子协议:数据源标识
协议:在JDBC中总是以jdbc开始
子协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端口。
例如:(MySql的连接URL)
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
3、创建数据库的连接
?要连接数据库,需要向java.sql.DriverManager请求并获得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 =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("数据库连接失败!");
se.printStackTrace() ;
}
4、创建一个Statement
?要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3种类型:
1、执行静态SQL语句。通常通过Statement实例实现。
2、执行动态SQL语句。通常通过PreparedStatement实例实现。
3、执行数据库存储过程。通常通过CallableStatement实例实现。
具体的实现方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt = con.prepareCall("{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 = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、处理结果
两种情况:
1、执行更新返回的是本次操作影响到的记录数。
2、执行查询返回的结果是一个ResultSet对象。
ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。
使用结果集(ResultSet)对象的访问方法获取数据:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1); // 此方法比较高效(列是从左到右编号的,并且从列1开始)
}
7、关闭JDBC对象
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反:
1、关闭记录集
2、关闭声明
3、关闭连接对象
if(rs != null){ // 关闭记录集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 关闭声明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 关闭连接对象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
Ⅳ JAVA WEB(MyEclipse 10)连接数据库具体怎么操作
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Connection;
importjava.sql.Statement;
publicclassMysqlDemo{
publicstaticvoidmain(String[]args)throwsException{
Connectionconn=null;
Stringsql;
//MySQL的JDBCURL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值
//避免中文乱码要指定useUnicode和characterEncoding
//执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定,
//下面语句之前就要先创建javademo数据库
Stringurl="jdbc:mysql://localhost:3306/javademo?"
+"user=root&password=root&useUnicode=true&characterEncoding=UTF8";
try{
//之所以要使用下面这条语句,是因为要使用MySQL的驱动,所以我们要把它驱动起来,
//可以通过Class.forName把它加载进去,也可以通过初始化来驱动起来,下面三种形式都可以
Class.forName("com.mysql.jdbc.Driver");//动态加载mysql驱动
//or:
//com.mysql.jdbc.Driverdriver=newcom.mysql.jdbc.Driver();
//or:
//newcom.mysql.jdbc.Driver();
System.out.println("成功加载MySQL驱动程序");
//一个Connection代表一个数据库连接
conn=DriverManager.getConnection(url);
//Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等
Statementstmt=conn.createStatement();
sql="createtablestudent(NOchar(20),namevarchar(20),primarykey(NO))";
intresult=stmt.executeUpdate(sql);//executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功
if(result!=-1){
System.out.println("创建数据表成功");
sql="insertintostudent(NO,name)values('2012001','陶伟基')";
result=stmt.executeUpdate(sql);
sql="insertintostudent(NO,name)values('2012002','周小俊')";
result=stmt.executeUpdate(sql);
sql="select*fromstudent";
ResultSetrs=stmt.executeQuery(sql);//executeQuery会返回结果的集合,否则返回空值
System.out.println("学号 姓名");
while(rs.next()){
System.out
.println(rs.getString(1)+" "+rs.getString(2));//入如果返回的是int类型可以用getInt()
}
}
}catch(SQLExceptione){
System.out.println("MySQL操作错误");
e.printStackTrace();
}catch(Exceptione){
e.printStackTrace();
}finally{
conn.close();
}
}
}
Ⅳ javaweb怎么连接mysql数据库
安装好mysql之后,那么你现在应该安装JDK了(JDK1.6就可以)
安装好JDK之后,就是安装Eclipse了,要支持JDK版本,Eclipse安装的时候会自动去找JDK安装位置的,如果你是解压版的Eclipse,就要配置eclipse.ini文件了,将对应的JDK配置好,这些已经准备就绪的时候,就到mysql中创建数据库和表
先创建数据库:
CREATE DATABASE SCUTCS;
接着,创建表:
CREATE TABLE STUDENT
(
SNO CHAR(7) NOT NULL,
SNAME VARCHAR(8) NOT NULL,
SEX CHAR(2) NOT NULL,
BDATE DATE NOT NULL,
HEIGHT DEC(5,2) DEFAULT 000.00,
PRIMARY KEY(SNO)
);
然后插入数据,可以用SQL语句insert into <表名> values (value1, value2, ...);
Ⅵ 什么是Java web开发中数据库的连接池技术,它的原理大致是什么
什么是连接池
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。
为什么要使用连接池
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。 一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的 性能低下。 数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接组成一个连接池(简单说:在一个“池”里放了好多半成品的数据库联接对象),由应用程序动态地对池中的连接进行申请、使用和释放。对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。 连接池技术尽可能多地重用了消耗内存地资源,大大节省了内存,提高了服务器地服务效率,能够支持更多的客户服务。通过使用连接池,将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
Ⅶ java web中怎么配置数据库池
使用proxool数据库连接池步骤:
在WEB-INF的lib中导入proxool-0.9.0RC3.jar
在WEB-INF中新建一个XML文件,取名为proxool.xml
在proxool.xml中的内容如下:
[html] view plain
<?xml version="1.0" encoding="UTF-8"?>
<!--
the proxool configuration can be embedded within your own application's. Anything outside the "proxool"
tag is ignored.
-->
<something-else-entirely>
<proxool>
<alias>smms</alias> <!--数据源的别名-->
<driver-url>jdbc:mysql://127.0.0.1:3306/smms</driver-url><!--url连接串-->
<driver-class>com.mysql.jdbc.Driver</driver-class><!--驱动类-->
<driver-properties>
<property name="user" value="root" /><!--用户名-->
<property name="password" value="root" /><!--密码-->
</driver-properties>
<!--最大连接数(默认 5个),超过了这个连接数,再有请求时,就排在队列中等候,最大的等待请求数由
maximum-new-connections决定-->
<maximum-connection-count>100</maximum-connection-count>
<!--最小连接数(默认2个)-->
<minimum-connection-count>10</minimum-connection-count>
<!--proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 默
认30秒-->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!--没有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受-
->
<maximum-new-connections>10</maximum-new-connections>
<!--最少保持的空闲连接数(默认2个)-->
<prototype-count>5</prototype-count>
<!--在使用之前测试-->
<test-before-use>true</test-before-use>
<!--用于保持连接的测试语句 -->
<house-keeping-test-sql>select id from t_sysadmin</house-keeping-test-sql>
</proxool>
</something-else-entirely>
在web.xml中添加以下节点:
[html] view plain
<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>
org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
t;/servlet>
数据库操作类如下:
[java] view plain
package cn.e.hbcit.smms..database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.log4j.Logger;
import org.logicalcobwebs.proxool.ProxoolException;
import org.logicalcobwebs.proxool.ProxoolFacade;
import org.logicalcobwebs.proxool.admin.SnapshotIF;
/**
* 数据库操作类
* @author lw
*
*/
public class DBConn {
private static Connection conn;
private static ResultSet rs;
private static PreparedStatement ps;
private static String driverClass = "org.logicalcobwebs.proxool.ProxoolDriver";//proxool驱动类
//private static String url = "jdbc:mysql://localhost:3306/bbs?user=root&password=123";
private static int activeCount = 0; //活动连接数
protected final Logger log = Logger.getLogger(DBConn.class.getName());
/**
* 获取数据库连接
* @return Connection
*/
public Connection getConn() {
try {
Class.forName(driverClass);
conn = DriverManager.getConnection("proxool.smms"); //此处的smms是在proxool.xml中配置的连接池别名
this.showSnapshotInfo(); //查看连接池信息
} catch (Exception e) {
log.error(e.getMessage());
log.debug("数据库连接错误!");
//System.out.println(e.getMessage());
//System.out.println("数据库连接错误!");
}
return conn;
}
/**
* 释放连接
* freeConnection
* @param conn
*/
public void freeConnection(Connection conn){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 获取连接池中的连接信息
*/
private void showSnapshotInfo(){
try{
SnapshotIF snapshot = ProxoolFacade.getSnapshot("smms", true);
int curActiveCount=snapshot.getActiveConnectionCount();//获得活动连接数
int availableCount=snapshot.getAvailableConnectionCount();//获得可得到的连接数
int maxCount=snapshot.getMaximumConnectionCount() ;//获得总连接数
if(curActiveCount!=activeCount)//当活动连接数变化时输出的信息
{
log.debug("活动连接数:"+curActiveCount+"(active);可得到的连接数:"+availableCount+"(available);总连接数:"+maxCount+"(max)");
//System.out.println("活动连接数:"+curActiveCount+"(active);可得到的连接数:"+availableCount+"(available);总连接数:"+maxCount+"(max)");
activeCount=curActiveCount;
}
}catch(ProxoolException e){
e.printStackTrace();
}
}
}
Ⅷ javaweb数据库操作
//该方法返回参数为ArrayList对象
public ArrayList executeQuery(String sqlString) {
//定义一个ArrayList对象的变量listSet
ArrayList listSet = new ArrayList();
//获取数据库列名
ResultSetMetaData rsmd = null;
//定义一个Map对象rsTree
Map rsTree;
//返回集的列数
int numberOfColumns;
try {
//连接数据库
conn = startConn(conn);
//实例化Statement对象
st = conn.createStatement();
//通过SQL查询出来的结果集【这里上面应该是少定义了一个结果集】
rs = st.executeQuery(sqlString);
//取数据库的列名
rsmd = rs.getMetaData();
//获得列数
numberOfColumns = rsmd.getColumnCount();
//去除结果集中的数据while遍历【rs.next():代表rs中有下一个有数据,就执行while中的方法】
while(rs.next()){
//定义rsTree为一个固定长度的HashMap,长度为numberOfColumns
rsTree = new HashMap(numberOfColumns);
//循环,将查询出来的列明和对应的数据放到Map对象rsTree中
for(int i = 1;i <= numberOfColumns;i++){
//【rsmd.getColumnName(i):获取查询结果的列名】【rs.getObject(i):获取结果集中对应的数据】
rsTree.put(rsmd.getColumnName(i), rs.getObject(i));
}
//将Map对象rsTree放到listSet对象中
listSet.add(rsTree);
}
}catch (SQLException e) {
//当出现SQL异常时,输出以下内容
System.out.println("查询数据库数据时发生错误!");
}finally{
//不管执行操作如何,始终关闭数据库连接
closeConn(conn, st, rs);
}
//返回ArrayList对象listSet
return listSet;
}
Ⅸ JAVA web 与数据库的连接到底是怎样连的啊
JAVA Web开发中与数据库的连接操作,配置:
1、新建数据库。
新建登录角色,在新建数据库的时候把数据库的所有权交给你新建的角色。用用户和密码控制数据库。保证数据库的安全。
2、编写context.xml文件 Xml文件的目的是封装用户和密码,也是封装的一种,方便操作。
以下为context.xml文件样例:
<?xml version="1.0" encoding="utf-8"?>
<Context reloadable = "true">
<Resource
name="jdbc/sampleHS"
type="javax.sql.DataSource"
maxActive="14"
maxIdle="10"
username="hstaoshu"
maxWait="5000"
driverClassName="org.postgresql.Driver"
password="hstaoshu"
url="jdbc:postgresql://localhost:5432/hstaoshu"/>
</Context>
详细说明:
name="jdbc/sampleHS"里面的ssampHS是可改名称,建议根据需要自己命名;
username="hstaoshu"
password="hstaoshu"此两项为你新建的数据库登录角色用户名和密码信息,只有匹配 了才能访问。这里简单为了表示,把用户名和密码弄成了跟数据库名字一样。其实这是很不安全的。
url="jdbc:postgresql://localhost:5432/hstaoshu"/>
这是连接数据库的URl,就像访问网站的地址一样。没有这个是无法访问数据库的。localhost:5432表示本地端口。一般不需要改动,如果你在配置数据库的时候改动过端口,那么你需要把它改回来。/hstaoshu是你的数据库名称。
其他选项请勿擅自改动。
3、编写DAO类。
DAO类的作用是与数据连接后,对数据库的一些操作的封装。封装的作用。为了更好的数据管理。
DAO是真正如何使用数据库的关键步骤,前两步只是部署和配置。
private static InitialContext context = null;
private DataSource dataSource = null;
//一般把跟数据库的连接放在DAO类的构造函数里,只要被实例化,就能和数据库连接。
public BookDAO() {
try {
if (context == null) {
context = new InitialContext();
}
dataSource = (DataSource) context.lookup("java:comp/env/jdbc/sampleHS");
// 连接数据库,前面在context.xml文件配置里的URl
} catch (NamingException e2) {
e2.printStackTrace();
}
}
public Connection getConnection() {
Connection conn = null;
try {
conn = dataSource.getConnection();// 获得数据源的连接对象
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
做完上面的三步操作,开发环境已经完全和数据库连接OK,可以开始数据库的操作了。一般来说,对数据库的操作语句都是提前封装好的。这样修改起来会对下面的代码影响降到最小。
如下:
// ------------------数据库操作语句代码封装------------------
/* 查看所有图书 */
private static final String SELECT_ALL_SQL = "SELECT * FROM book";
那么在使用的时候只要直接调用:
pstmt = conn.prepareStatement(SELECT_ALL_SQL);
Ⅹ java web 怎么连接sql数据库
JAVA Web开发中与数据库的连接操作,配置:
1、新建数据库。
新建登录角色,在新建数据库的时候把数据库的所有权交给你新建的角色。用用户和密码控制数据库。保证数据库的安全。
2、编写context.xml文件 Xml文件的目的是封装用户和密码,也是封装的一种,方便操作。
以下为context.xml文件样例:
<?xml version="1.0" encoding="utf-8"?>
<Context reloadable = "true">
<Resource
name="jdbc/sampleHS"
type="javax.sql.DataSource"
maxActive="14"
maxIdle="10"
username="hstaoshu"
maxWait="5000"
driverClassName="org.postgresql.Driver"
password="hstaoshu"
url="jdbc:postgresql://localhost:5432/hstaoshu"/>
</Context>
详细说明:
name="jdbc/sampleHS"里面的ssampHS是可改名称,建议根据需要自己命名;
username="hstaoshu"
password="hstaoshu"此两项为你新建的数据库登录角色用户名和密码信息,只有匹配 了才能访问。这里简单为了表示,把用户名和密码弄成了跟数据库名字一样。其实这是很不安全的。
url="jdbc:postgresql://localhost:5432/hstaoshu"/>
这是连接数据库的URl,就像访问网站的地址一样。没有这个是无法访问数据库的。localhost:5432表示本地端口。一般不需要改动,如果你在配置数据库的时候改动过端口,那么你需要把它改回来。/hstaoshu是你的数据库名称。
其他选项请勿擅自改动。
3、编写DAO类。
DAO类的作用是与数据连接后,对数据库的一些操作的封装。封装的作用。为了更好的数据管理。
DAO是真正如何使用数据库的关键步骤,前两步只是部署和配置。
private static InitialContext context = null;
private DataSource dataSource = null;
//一般把跟数据库的连接放在DAO类的构造函数里,只要被实例化,就能和数据库连接。
public BookDAO() {
try {
if (context == null) {
context = new InitialContext();
}
dataSource = (DataSource) context.lookup("java:comp/env/jdbc/sampleHS");
// 连接数据库,前面在context.xml文件配置里的URl
} catch (NamingException e2) {
e2.printStackTrace();
}
}
public Connection getConnection() {
Connection conn = null;
try {
conn = dataSource.getConnection();// 获得数据源的连接对象
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
做完上面的三步操作,开发环境已经完全和数据库连接OK,可以开始数据库的操作了。一般来说,对数据库的操作语句都是提前封装好的。这样修改起来会对下面的代码影响降到最小。
如下:
// ------------------数据库操作语句代码封装------------------
/* 查看所有图书 */
private static final String SELECT_ALL_SQL = "SELECT * FROM book";
那么在使用的时候只要直接调用:
pstmt = conn.prepareStatement(SELECT_ALL_SQL);