- 1、怎么用jsp连接mysql数据库
- 2、jsp怎样用jdbc连接mysql数据库
- 3、jsp连接mysql数据库的难点
- 4、jsp怎么连接mysql数据库
- 5、jsp中使用JDBC连接MySQL数据库如何解决
- 6、jsp页面中怎么导入jdbc连接mysql
一. 数据库的连接和操作笔记:
1.初始化连接字符串
2. 发送请求连接
3.如果需要对数据库进行操作,如查询,添加,删除,修改等,则发送数据库操作请 求,成功就返回结果,不成功操作失败
4. 不进行操作就关闭数据库操作,以及关闭数据库发送请求
二.配置环境
”工欲善其事必先利其器“ 在配置之前必须准备好几个必要的文件java 的jdk(我用的是1.5),Tomcat(我的是5.5) ,mysql(5.0),jdbc(mysql-connector-java-3.1.14.zip) 的驱动,当然还有Dreamweaver 等等必要工具。
第一件事情:安装jdk 1.5版本,安装tomcat,mysql,解压jdbc到包(官方网站有下载,注册一个就行)
第二件事情:配置jdk,配置tomcat,jdbc
jdbc的配置:我的解压目录是 I:\mysql-connector-java-3.1.14 里面可以看到一个mysql-connector-java-3.1.14-bin.jar 这个jar 的文件。右键打开电脑属性—–高级—环境变量—找到系统变量。。点击CLASSPATH,进行”编辑“ 加入I:\mysql-connector-java-3.1.14\mysql-connector-java-3.1.14-bin.jar 这个路径去,这里说明的我是盘式i盘,jdbc可以随便解压到那个盘都行,指定路径就是。
第二步:jdbc解压包下 mysql-connector-java-3.1.14-bin.jar 这个文件放入到Tomcat安装目录下
Tomcat 5.5\common\lib
Tomcat 5.5\shared\lib
这两个文件夹里面。
基本上的工作就完成了。呵呵(当然这个要看网上的资料,这里要自己重新写一次 唉好苦啊,没得抄)
基本工作准备好,找一个mysql 数据库的界面操作 GUI软件 名字为: navicat(这个很好用)打开mysql,测试一下自己的mysql 可不可以连通,可以的话那么就可以新建一个数据库test,一个表为mytest,字段是id和myname(这个随便也行)
工具:
mysql
jsp页面中怎么导入jdbc连接mysql如下:
注意:一定要把mysql的环境变量配置到系统的环境变量中才可以,否则会连接失败
1、jsp是java服务端动态网页技术,主要应用于网页构建,理论上讲不应该在页面中直接连数据库。合理的做法是先构建一个java后端,然后在JAVA后端中通过jdbc连接sqlserver。
2、如果一定要在jsp页面中连数据库也是可以的。jsp中有专门的sql标签可以连接数据库进行操作,这是jstl的内容,需要导入相应的数据库驱动包。
3、jsp的内容相对来说技术难度都不算特别高,学习起来还是比较容易的。
4、希望对你有帮助。
我写的一个用JSP连接MySQL数据库的代码。
要正确的使用这段代码,你需要首先在MySQL数据库里创建一username表,表里面创建两个字符型的字段,字段名分别为:uid,pwd,然后插入几条测试数据。
以下用两种方式来实现JSP连接MySql数据库。
第一种方式,用JSP实现。
%@ page contentType=”text/html; charset=gb2312″ language=”java”
import=”java.sql.*”%
%
//**************************************
********* JDBC_ODBC连接MySql数据库,不需要设置数据源
*********************************/
//********** 数据库连接代码 开始 ******/
//以下几项请自行修改
String server=”localhost”; //MYSQL 服务器的地址
String dbname=”test”; //MYSQL 数据库的名字
String user=”root”; //MYSQL 数据库的登录用户名
String pass=”chfanwsp”; //MYSQL 数据库的登录密码
String port=”3306″; //SQL Server 服务器的端口号,默认为1433
//数据库连接字符串
String url =”jdbc:mysql://”+server+”:”+port+”/”+dbname+”?user=”+user+
“password=”+pass+”useUnicode=truecharacterEncoding=GB2312”;
//加载驱动程序
Class.forName(“org.gjt.mm.mysql.Driver”).newInstance();
//建立连接
Connection conn= DriverManager.getConnection(url);
//创建语句对象
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
// **** 数据库连接代码 结束 *******
String sql=”select * from username”;
ResultSet rs=stmt.executeQuery(sql);
//rs.first();
while(rs.next()){
out.print(“用户名:”);
out.print(rs.getString(“uid”)+” 密码:”);
out.println(rs.getString(“pwd”)+”
“);
}
rs.close();
stmt.close();
conn.close();
%
第二种方式,用JavaBean来实现。请看代码:
DBConnMySql.java
编译以后的Class文件应该放在WEB-INF\classes\conn目录下。
package conn; //导入包
import java.sql.*; //导入数据库操作的类
public class DBConnMySql //构造方法,初始化
{
private Connection conn; //连接对象
private Statement stmt; //语句对象
private ResultSet rs; //结果集对象
private String MySqldriver;//MYSQL Server驱动程序字符串
private String MySqlURL; //MYSQL Server连接字符串
//********************************
*用 org.gjt.mm.mysql.Driver 驱动
* 该方法取得连接所需各种参数,组成连接字符串,然后再建立连接
* server;dbname,user,pass,port 分别表示MYSQL 服务器的地址,
* 数据库,用户名,密码,端口
**********************************/
public Connection getConnToMySql(String server,String dbname,
String user,String pass,String port){
//MYSQl驱动程序
MySqldriver = “org.gjt.mm.mysql.Driver”;
MySqlURL = “jdbc:mysql://”; //连接字符串一部分
try{
//完整的连接字符串
MySqlURL =MySqlURL+server+”:”+port+”/”+dbname+
“?user=”+user+”password=”+pass+
“useUnicode=truecharacterEncoding=GB2312”;
Class.forName(MySqldriver);
conn = DriverManager.getConnection(MySqlURL);
}catch(Exception e){
System.out.println(“操作数据库出错,请仔细检查”);
//System.err.println(e.getMessage());
}
return conn;
}
//关闭数据库连接
public void close()
{
try{
//rs.close();
//stmt.close();
conn.close();
}catch(SQLException sqlexception){
sqlexception.printStackTrace();
}
}
}
这个文件只是实现了数据库的连接,下面我们再写一个测试文件。
就是用sql语句从数据库里查询出记录,以验证我们数据库的连接是否成功。
connmysql.jsp文件源代码如下:
%@ page contentType=”text/html; charset=gb2312″ language=”java”
import=”java.sql.*” %
%
//以下几项请自行修改
String server=”localhost”; //MYSQL 服务器的地址
String dbname=”test”; //MYSQL 数据库的名字
String user=”root”; //MYSQL 数据库的登录用户名
String pass=”chfanwsp”; //MYSQL 数据库的登录密码
String port=”3306″; //SQL Server 服务器的端口号,默认为1433
Connection conn=DBConn.getConnToMySql(server,dbname,user,pass,port);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
String sql=”select * from username”;
String sql1=”insert into username (uid,pwd) values(‘梦想年华’,’梦想年华’)”;
stmt.executeUpdate(sql1);
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){
out.print(“用户名:”);
out.print(rs.getString(“uid”)+” 密码:”);
out.println(rs.getString(“pwd”)+”
“);
}
//rs.close();
//stmt.close();
//conn.close();
DBConn.close();
%
在index.jsp中输入如下代码,并配置相应mySQL数据库数据
%@ page language=”java” import=”java.util.*” pageEncoding=”utf-8″%
%@ page import=”java.sql.*” %
body
%
String driver = “com.mysql.jdbc.Driver”;
// URL指向要访问的数据库名test1
String url = “jdbc:mysql://127.0.0.1:3306/test”;
// MySQL配置时的用户名
String user = “root”;
// Java连接MySQL配置时的密码
String password = “111”;
try {
// 1 加载驱动程序
Class.forName(driver);
// 2 连接数据库
Connection conn = DriverManager.getConnection(url, user, password);
// 3 用来执行SQL语句
Statement statement = conn.createStatement();
// 要执行的SQL语句
String sql = “select * from login”;
ResultSet rs = statement.executeQuery(sql);
String name = null;
String mima=null;
while (rs.next()) {
name = rs.getString(“userName”);
mima = rs.getString(“passWord”);
out.println(name+”\t”+mima);
}
rs.close();
conn.close();
} catch (ClassNotFoundException e) {
System.out.println(“Sorry,can`t find the Driver!”);
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
%
/body
12,这样就运行成功了,对于出现8080端口号被占用,可以采用如下的方法进行删除对应的进程。
在命令提示符下,输入netstat -aon | findstr 8080
找到对应的进程的PID,假设是7659 再输入如下的命令
taskkill /pid 7659 /F
即可删除对应的进程。
在项目lib中加入mysql的jar包,然后写jdbc链接信息即可,如下提供多种链接方式希望对你有帮助
JDBC连接MySQL
加载及注册JDBC驱动程序
Class.forName(“com.mysql.jdbc.Driver”);
Class.forName(“com.mysql.jdbc.Driver”).newInstance();
JDBC URL 定义驱动程序与数据源之间的连接
标准语法:
protocol(主要通讯协议):subprotocol(次要通讯协议,即驱动程序名称):data source identifier(数据源)
MySQL的JDBC URL格式:
jdbc:mysql//[hostname][:port]/[dbname][?param1=value1][param2=value2]….
示例:jdbc:mysql://localhost:3306/sample_db?user=rootpassword=your_password
常见参数:
user 用户名
password 密码
autoReconnect 联机失败,是否重新联机(true/false)
maxReconnect 尝试重新联机次数
initialTimeout 尝试重新联机间隔
maxRows 传回最大行数
useUnicode 是否使用Unicode字体编码(true/false)
characterEncoding 何种编码(GB2312/UTF-8/…)
relaxAutocommit 是否自动提交(true/false)
capitalizeTypeNames 数据定义的名称以大写表示
建立连接对象
String url=”jdbc:mysql://localhost:3306/sample_db?user=rootpassword=your_password”;
Connection con = DriverManager.getConnection(url);
建立SQL陈述式对象(Statement Object)
Statement stmt = con.createStatement();
执行SQL语句
executeQuery()
String query = “select * from test”;
ResultSet rs=stmt.executeQuery(query);
结果集ResultSet
while(rs.next())
{rs.getString(1);rs.getInt(2);}
executeUpdate()
String upd=”insert into test (id,name) values(1001,xuzhaori)”;
int con=stmt.executeUpdate(upd);
execute()
示例:
try
{
}
catch(SQLException sqle)
{
}
finally
{
}
Java类型和SQL类型 技术手册P421
PreparedStatement(预编语句)
PreparedStatement stmt = conn.prepareStatement(“insert into test(id,name)values(?,?)”);
stmt.setInt(1,id);
stmt.setString(2,name);
注:一旦设定语句的参数值后,就可以多次执行改语句,直到调用clearParameters()方法将他清除为止
CallableStatement(预储程序)技术手册P430
JDBC2.0使用
ResultSet对象中的光标上下自由移动
Statement stmt = con.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stmt.executeQuery(“select * from test”);
public Statement createStatement(int resultSetType,int resultSetConcuttency) throws SQLException
resultSetType
TYPE_FORWARD_ONLY 只能使用next()方法。
TYPE_SCROLL_SENSITIVE 可以上下移动,可以取得改变后的值。
TYPE_SCROLL_INSENSITIVE 可以上下移动。
resultSetConcuttency
CONCUR_READ_ONLY 只读
CONCUR_UPDATABLE ResultSet对象可以执行数据库的新增、修改、和移除
直接使用ResultSet对象执行更新数据
新增数据
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE);
ResultSet uprs=stmt.executeQuery(“select * from test”);
uprs.moveToInsertRow();
uprs.updateInt(1,1001);
uprs.updateString(2,”许召日”);
uprs.insertRow;
更新数据
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE);
ResultSet uprs=stmt.executeQuery(“select * from test”);
uprs.last();
uprs.updateString(“name”,””);
uprs.updateRow;
删除数据
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE);
ResultSet uprs=stmt.executeQuery(“select * from test”);
uprs.absolute(4);
uprs.deleteRow();
批处理
con.setAutoCommit(false); 关闭自动认可模式
Statement stmt=con.createStatement();
int[] rows;
stmt.addBatch(“insert into test values(1001,xuzhaori)”);
stmt.addBatch(“insert into test values(1002,xuyalin)”);
rows=stmt.executeBatch();
con.commit(); 没有任何错误,执行批处理stmt.executeBatch();
JNDI-数据源(Data Source)与连接池(Connection Pool)
Tomcat的JDBC数据源设置 技术手册P439
连接池工具-Proxool Var 0.8.3 技术手册P446
设置web.xml
?xml version=”1.0″ encoding=”ISO-8859-1″?
!–?xml version=”1.0″ encoding=”GB2312″?–
web-app xmlns=””
xmlns:xsi=””
xsi:schemaLocation=””
version=”2.4″
….
servlet
servlet-nameServletConfigurator/servlet-name
servlet-classorg.logicalcobwebs.proxool.configuration.ServletConfigurator/servlet-class
init-param
param-namepropertyFile/param-name
param-valueWEB-INF/classes/Proxool.properties/param-value
/init-param
load-on-startup1/load-on-startup
/servlet
后端统计端口添加下列
servlet
servlet-nameAdmin/servlet-name
servlet-classorg.logicalcobwebs.proxool.admin.servlet.AdminServlet/servlet-class
/servlet
servlet-mapping
servlet-nameAdmin/servlet-name
url-pattern/Admin/url-pattern
/servlet-mapping
….
/web-app
配置Proxool.properties
jdbc-0.proxool.alias=JSPBook
jdbc-0.proxool.driver-class=com.mysql.jdbc.Driver
jdbc-0.proxool.driver-url=jdbc:mysql://localhost:3306/sample_db?user=rootpassword=browseruseUnicode=truecharacterEncoding=UTF-8
jdbc-0.proxool.maximum-connection-count=10
jdbc-0.proxool.prototype-count=4
jdbc-0.proxool.house-keeping-test-sql=select CURRENT_DATE
jdbc-0.proxool.verbose=true
jdbc-0.proxool.statistics=10s,1m,1d 后端统计接口添加此行
jdbc-0.proxool.statistics-log-level=DEBUG
使用Proxool连接池
Connection con = DriverManager.getConnection(“proxool.JSPBook”);
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
String query = “SELECT * FROM employee”;
ResultSet rs = stmt.executeQuery(query);
原创文章,作者:简单一点,如若转载,请注明出处:https://www.506064.com/n/126919.html