java中连接MySQL数据库的几种方式

java中连接MySQL数据库的几种方式,第1张

Java要连接数据库,那么首先你必须安装mysql数据库。

安装好mysql之后,安装JDK了。

安装好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文件来演示一下如何访问MySQL数据库。

import java.sql.*

public class JDBCTest {

public static void main(String[] args){

// 驱动程序名           String driver = "com.mysql.jdbc.Driver"

// URL指向要访问的数据库名scutcs           String url = "jdbc:mysql://127.0.0.1:3306/scutcs"

// MySQL配置时的用户名           String user = "root"              // MySQL配置时的密码           String password = "root"

try {             // 加载驱动程序            Class.forName(driver)

// 连续数据库            Connection conn = DriverManager.getConnection(url, user, password)

if(!conn.isClosed())              System.out.println("Succeeded connecting to the Database!")

// statement用来执行SQL语句            Statement statement = conn.createStatement()

// 要执行的SQL语句            String sql = "select * from student"

// 结果集            ResultSet rs = statement.executeQuery(sql)

while(rs.next())              // 选择sname这列数据             name = rs.getString("sname

// 输出结果             System.out.println(rs.getString("sno") + "\t" + name)            }

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()

} } }

使用java连接MySQL数据库与其他的数据库连接核心是一样的,如果说区别,那就是所需的驱动不一样。

工具/原料

MySQL、JDK

方法/步骤

1、首先需要安装好JDK(配置环境变量),如图所示:

2、其次要安装好MySQL数据库,可以使用可视化Navicar For MySQL,如图所示:

3、最后通过代码进行连接。

(1)确定连接路径URL:

String url="jdbc:mysql://localhost(可以是本机IP地址):3306(端口号)/mysqltest(数据库名称)?"+"user=用户账号&password=用户密码&useUnicode=字符编码"

(2)加载驱动:

Class.forName("com.mysql.jdbc.Driver")

(3)连接,获取Connection对象

Connection conn=DriverManager.getConnection(url)

(4)可以通过conn对象检验连接与否。

javaDB其实就是Derby,它并不是一个新的数据库产品,它是由IBM捐献给Apache的DB项目的一个纯Java数据库,JDK6.0里面带的这个Derby的版本是 10.2.1.7,支持存储过程和触发器有两种运行模式,一种是作为嵌入式数据库,另一种是作为网络数据库,前者的数据库服务器和客户端都在同一个 JVM里面运行,后者允许数据库服务器端和客户端不在同一个JVM里面,而且允许这两者在不同的物理机器上.值得注意的是JDK6里面的这个Derby支持JDK6的新特性JDBC 4.0规范(JSR 221),现在我们如果要练习JDBC的用法,没有必要单独装一个数据库产品了,直接用Derby就行.

1、本身没有 *** 作界面,可以用第三方工具来管理(也就是你说的 *** 作界面),Aqua Data Studio 具备管理功能的用于 Apache Derby 关系数据库的管理工具和数据库查询工具。直观管理功能让用户能够浏览和修改数据库结构,包括架构对象和数据库存储,以及维护数据库安全。集成查询工具让您能够迅速创建、编辑和执行 SQL 查询与脚本。Aqua Data Studio 进一步提供导入与导出工具,从而轻松地将数据移入和移出不同的数据格式及 Apache Derby 数据库。集成在这些工具内的是库浏览器 (Repository Browser),拥有 CVS 和 Subversion (SVN) 的完整来源控制客户端。

2、两者的区别,简单的说,就是javaDB是一个简化轻量级数据库,适合小型系统的小规模测试用,完全可以跑在内存里的数据库,它只有3M大小,而MySQL则是可以应用部署大型系统的数据库,功能更多更全,也更稳定,是用范围更广。

3、下面是个使用derby的简单例子:

首先导入JAR包:derby.jar,如果你装的是JDK6,在C:\Program Files\Sun\JavaDB\lib目录下就可以找到.

然后就要创建数据库了:

代码

private Connection getConnection() throws SQLException {

Connection connection = DriverManager

.getConnection("jdbc:derby:userDBcreate=trueuser=testpassword=test")

connection.setAutoCommit(false)

return connection

}

其中userDB是要连接数据库的名字,create=true表示如果该数据库不存在,则创建该数据库,如果数据库存在,则用用户user=test密码password=test连接数据库.

有了数据库,接下来该建表了:

代码

private void createTable(Connection connection) throws SQLException {

Statement statement = connection.createStatement()

String sql = "create table USERS("

+ " ID BIGINT not null generated by default as identity,"

+ " USER_NAME VARCHAR(20) not null,"

+ " PASSWORD VARCHAR(20),"

+ " constraint P_KEY_1 primary key (ID))"

statement.execute(sql)

sql = "create unique index USER_NAME_INDEX on USERS ("

+ " USER_NAME ASC)"

statement.execute(sql)

statement.close()

}

创建了 USERS表,包括ID,USER_NAME,PASSWORD三个列,其中ID是主键,其中generated by default as identity 的作用类似sequence,identity是定义自动加一的列,

GENERATED BY ALWAYS AS IDENTITY

GENERATED BY DEFAULT AS IDENTITY

By always和by default是说明生成这个IDENTITY的方式。

By always是完全由系统自动生成。

by default是可以由用户来指定一个值。

编写与USERS表对应的javabean(这个就不多说了),:

代码

public class User implements Serializable {

/**

*

*/

private static final long serialVersionUID = 1L

private Long id

private String userName

private String password

public Long getId() {

return id

}

public void setId(Long id) {

this.id = id

}

public String getUserName() {

return userName

}

public void setUserName(String userName) {

this.userName = userName

}

public String getPassword() {

return password

}

public void setPassword(String password) {

this.password = password

}

}

接下来就可以就数据库进行增删改查的 *** 作了:

插入数据:

代码

private void create(User user) {

Connection connection = null

try {

connection = this.getConnection()

PreparedStatement statement = connection

.prepareStatement("insert into users (user_name,password) values(?,?)")

int index = 1

statement.setString(index++, user.getUserName())

statement.setString(index++, user.getPassword())

statement.execute()

user.setId(this.getId(connection))

connection.commit()

} catch (SQLException e) {

rollback(connection)

throw new RuntimeException(e)

} finally {

if (connection != null) {

close(connection)

}

}

}

代码

private Long getId(Connection connection) throws SQLException {

CallableStatement callableStatement = connection

.prepareCall("values identity_val_local()")

ResultSet resultSet = callableStatement.executeQuery()

resultSet.next()

Long id = resultSet.getLong(1)

resultSet.close()

callableStatement.close()

return id

}

getId方法是获得系统默认的id值,是通过 identity_val_local()获得的,而函数IDENTITY_VAL_LOCAL()则可以在INSERT语句执行之后,为我们返回刚才系统为id所产生的值.感觉还是有点想sequence的curr_val.

修改数据:

代码

private void update(User user) {

Connection connection = null

try {

connection = this.getConnection()

PreparedStatement statement = connection

.prepareStatement("update users set user_name=?,password=? where id=?")

int index = 1

statement.setString(index++, user.getUserName())

statement.setString(index++, user.getPassword())

statement.setLong(index++, user.getId())

statement.execute()

connection.commit()

} catch (SQLException e) {

rollback(connection)

throw new RuntimeException(e)

} finally {

if (connection != null) {

close(connection)

}

}

}

删除数据:

代码

public void delete(Long id) {

Connection connection = null

try {

connection = this.getConnection()

PreparedStatement statement = connection

.prepareStatement("delete from users where id=?")

statement.setLong(1, id)

statement.execute()

connection.commit()

} catch (SQLException e) {

rollback(connection)

throw new RuntimeException(e)

} finally {

if (connection != null) {

close(connection)

}

}

}

查询数据:

代码

public User findById(Long id) {

Connection connection = null

try {

connection = this.getConnection()

PreparedStatement statement = connection

.prepareStatement("select user_name,password from users where id=?")

statement.setLong(1, id)

ResultSet resultSet = statement.executeQuery()

User user = null

if (resultSet.next()) {

user = new User()

user.setId(id)

user.setUserName(resultSet.getString("user_name"))

user.setPassword(resultSet.getString("password"))

}

resultSet.close()

statement.close()

connection.commit()

return user

} catch (SQLException e) {

throw new RuntimeException(e)

} finally {

if (connection != null) {

close(connection)

}

}

}


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

原文地址: http://outofmemory.cn/zaji/6230249.html

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

发表评论

登录后才能评论

评论列表(0条)

保存