jsp中使用JDBC连接MySQL数据库如何解决

jsp中使用JDBC连接MySQL数据库如何解决,第1张

在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

即可删除对应的进程。

工具:

mysql

jsp页面中怎么导入jdbc连接mysql如下:

 注意:一定要把mysql的环境变量配置到系统的环境变量中才可以,否则会连接失败

在项目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=root&password=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=root&password=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","www.5itjob.com")

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="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

version="2.4">

….

<servlet>

<servlet-name>ServletConfigurator</servlet-name>

<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>

 

<init-param>

<param-name>propertyFile</param-name>

<param-value>WEB-INF/classes/Proxool.properties</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

后端统计端口添加下列

<servlet>

<servlet-name>Admin</servlet-name>

<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>

</servlet>

 

<servlet-mapping>

<servlet-name>Admin</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=root&password=browser&useUnicode=true&characterEncoding=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://outofmemory.cn/sjk/10715599.html

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

发表评论

登录后才能评论

评论列表(0条)

保存