Java数据库操作(修改)
Java连接MySql数据库,并且实现插入、删除、更新、选择操作

天之火–Qutr的专栏君子终日乾乾,夕惕若,厉,无咎。
HomeJava连接MySql数据库,并且实现插入、删除、更新、选择操作!这是我最近写的一个连接MySql数据库的一个例子,主要实现了插入,删除,更新,选择操作,用的环境是j2sdk1.4.2_08,Eclipse3.1。
以前我的同事用Python 写了同样的类,非常的好用,支持了我们公司的大部分业务,现在我们慢慢改用Java了,所以我用Java重写了一遍。
一方面在今后的业务中能够用到,另一方面熟悉一下Java。
下面我把在Eclipse3.1下怎样配置数据库连接信息简单说一下。
1.启动Eclipse3.1。
2.建立一个Java project就叫DbConnect 吧,再在该Project下建立一个新类也叫DbConnect 吧。
3.右击DbConnect.java文件点import,选择Archive file然后选择你的mysql-connector-java-3.1.8-bin.jar文件,点Finish。
你会看到有好些文件被加载进来,OK这就是连接MySql所需的驱动信息。
如果到了这里你都成功的话那么恭喜你,你已经成功一半了!:)4.接下来把我下面的代码copy到你的Java文件中,修改相关的数据库连接信息运行一下。
OK?我说一下那个mysql-connector-java-3.1.8-bin.jar文件,其实这就是一个MySql的驱动,各数据库厂商提供了不同的适用于JDBC的驱动使得在Java中连接数据库非常简单。
这里我就不多说了,以后我会写篇专门介绍数据库驱动的文章。
关于MySql的驱动还有更新版本的,你需要到MySql的网站上去下载,这个网上到处都是,我就不多说了。
下面看程序,有些地方我写了详细的注释应该能看懂。
这个类是非常有特色的,在每个方法的传人参数和返回值不变的情况下,希望高手能提出改进意见。
多指教,谢谢!/*** 数据库连接、选择、更新、删除演示*///import java.sql.*;import java.sql.Connection;import java.sql.Statement;import java.sql.ResultSet;import java.sql.DriverManager;import java.util.*;public class DbConnect{/////////////////////////////////////////———–>>>数据成员and 构造函数private Connection dbconn;private Statement dbstate;private ResultSet dbresult;DbConnect(){dbconn = null;dbstate = null;dbresult = null;}/////////////////////////////////////////———–>>>类方法public void print(String str)//简化输出{System.out.println(str);}//end print(…)/*** 连接MySql数据库* @param host* @param port* @param dbaName* @param usName* @param psw* @return bool值,连接成功返回真,失败返回假*/public boolean dbConnection(String host, String port, String dbaName, String usName, String psw){String driverName = "com.mysql.jdbc.Driver";//"org.gjt.mm.mysql.Driver"两个驱动都可以用String dbHost = host;//数据库的一些信息String dbPort = port;String dbName = dbaName;String enCoding = "?useUnicode=true&characterEncoding=gb2312"; //解决MySql中文问题,要连续写不能空格String userName = usName;String Psw = psw;String url = "jdbc:mysql://" + dbHost + ":" + dbPort + "/" + dbName + enCoding;try{Class.forName(driverName).newInstance();dbconn = DriverManager.getConnection(url, userName, Psw);//getConnection(url, userName, Psw)从给的driver中选择合适的去连接数据库//return a connection to the URL}catch(Exception e){print("url = " + url); //发生错误时,将连接数据库信息打印出来print("userName = " + userName);print("Psw" + Psw);print("Exception: " + e.getMessage());//得到出错信息}if (dbconn != null)//dbconn != null 表示连接数据库成功,由异常保证!?return true;elsereturn false;}// end boolean dbConnection(…)/*** 对数据库表进行选择操作!* @param tableName 数据库表名* @param fieles 字段名* @param selCondition 选择条件* @return 一个含有map的List(列表)*/public ArrayList dbSelect(String tableName, ArrayList fields, String selCondition){ArrayList mapInList = new ArrayList();String selFields = "";for (int i = 0; i<fields.size(); ++i)selFields += fields.get(i) + ", ";String selFieldsTem = selFields.substring(0, selFields.length() – 2);//根据String的索引提取子串try{dbstate = dbconn.createStatement();String sql = "select " + selFieldsTem + " from " + tableName + selCondition;print("sql = " + sql);try{dbresult = dbstate.executeQuery(sql);}catch(Exception err){print("Sql = " + sql);print("Exception: " + err.getMessage());}while(dbresult.next()){Map selResult = new HashMap();selResult.put("message_type", dbresult.getString("message_type"));selResult.put("message_content",dbresult.getString("message_content"));mapInList.add(selResult);}}catch(Exception e){print("Exception: " + e.getMessage());}return mapInList;}//end String dbSelect(…)/*** 对数据库表中的记录进行删除操作* @param tableName* @param condition* @return bool值,表示删除成功或者失败。
Java数据库编程实战使用ORM框架和事务管理

Java数据库编程实战使用ORM框架和事务管理一、概述数据库编程在Java开发中扮演着重要的角色,它涉及到与数据库进行连接、数据的增删改查等操作。
为了提高开发效率和代码的可维护性,使用ORM(Object Relational Mapping)框架和事务管理是非常实用的。
二、ORM框架1. 定义ORM框架是一种利用对象模型来操作数据库的技术,它能够将Java对象与数据库表进行映射,在编程中通过操作Java对象来实现对数据库的增删改查操作,而无需直接操作SQL语句。
2. 优势使用ORM框架的主要优势包括:- 提高开发效率:ORM框架能够自动完成数据库操作,减少了手动编写繁杂的SQL语句的工作量。
- 提高代码可维护性:使用ORM框架可以使代码更加简洁和易读,减少了与数据库相关的代码量,提高代码的可维护性。
- 跨数据库支持:ORM框架通常具有良好的数据库兼容性,可以方便地切换不同的数据库。
- 自动事务管理:ORM框架通常提供事务管理的功能,能够自动处理数据库事务,确保数据的一致性和完整性。
三、常见的Java ORM框架1. HibernateHibernate是一个开源的Java ORM框架,它提供了大量的ORM解决方案,以及强大的查询语言HQL(Hibernate Query Language)。
通过Hibernate,我们可以通过简单地配置和注解,将Java对象映射到数据库表,并进行增删改查操作。
2. MyBatisMyBatis是另一个流行的Java ORM框架,它通过XML配置文件或注解方式来实现Java对象与数据库表的映射。
MyBatis将SQL语句与Java方法绑定,提供了灵活的动态SQL查询功能。
3. Spring Data JPASpring Data JPA是基于JPA(Java Persistence API)的ORM框架,它是Spring Framework的一部分。
Spring Data JPA通过简化关系型数据库的访问,提供了一种更为简单和高效的方式来进行ORM操作。
如何在Java中进行数据的持久化和读取操作

如何在Java中进行数据的持久化和读取操作数据的持久化是指将程序中的数据存储在持久存储介质中(如文件、数据库等)以便下次程序运行时能够重新读取和使用。
在Java中,数据的持久化和读取操作可以通过文件操作、数据库操作、序列化和反序列化等方式实现。
本文将重点介绍在Java中进行数据的持久化和读取操作的几种方法。
一、文件操作1.1文件写入在Java中进行文件数据的持久化操作可以使用FileOutputStream 或者BufferedWriter等类来实现。
通过FileOutputStream类,可以将数据以字节的形式写入文件,示例代码如下:```javatry {String data = "Hello, World!";FileOutputStream fos = new FileOutputStream("data.txt");fos.write(data.getBytes());fos.close();} catch (IOException e) {e.printStackTrace();}```上述代码中,首先定义了一个字符串数据并赋值给data变量,然后通过FileOutputStream类打开文件输出流,并将字符串数据以字节形式写入文件中,最后关闭文件输出流。
1.2文件读取使用FileInputStream或者BufferedReader类可以实现对文件数据的读取操作。
示例代码如下:```javatry {FileInputStream fis = new FileInputStream("data.txt");int content;while ((content = fis.read()) != -1) {System.out.print((char) content);}fis.close();} catch (IOException e) {e.printStackTrace();}```上述代码中,首先使用FileInputStream类打开文件输入流,并定义一个整型变量content用于存储读取的字节数据。
在Java中使用JPA进行数据库操作

在Java使用JPA行数据库操作Java Persistence API (JPA) 是Java EE 平台中用于ORM的标准API。
使用JPA,你可以将Java 对象映射到数据库表中,并可以轻松地进行查询和更新操作。
以下是在Java 中使用JPA 进行数据库操作的基本步骤:1.添加依赖:首先,你需要在项目中添加JPA 的依赖。
如果你使用Maven,可以在pom.xml文件中添加如下依赖:xml复制代码<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>5.4.31.Final</version></dependency>2.配置数据源:在项目中配置数据源。
如果你使用Maven,可以在pom.xml文件中添加如下依赖:xml复制代码<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.23</version></dependency>然后在src/main/resources目录下创建persistence.xml文件,内容如下:xml复制代码<persistence-unit name="myPersistenceUnit" transaction-type="RESOURCE_LOCAL"><properties><property name="hibernate.connection.driver_class"value="com.mysql.cj.jdbc.Driver" /><property name="hibernate.connection.url"value="jdbc:mysql://localhost:3306/mydatabase" /><property name="ername"value="username" /><property name="hibernate.connection.password"value="password" /></properties></persistence-unit>3.创建实体类:创建一个实体类,并通过注解来定义它与数据库表之间的映射关系。
Java操作PostgreSQL

Java操作PostgreSQLPostgreSQL是一种开源的关系型数据库管理系统,广泛应用于许多企业和开发者的项目中。
Java作为一种强大而灵活的编程语言,也提供了许多工具和库可以用于与PostgreSQL进行交互和操作。
本文将介绍如何使用Java操作PostgreSQL数据库,以及一些常用的操作技巧和注意事项。
一、准备工作在开始使用Java操作PostgreSQL之前,我们需要进行一些准备工作。
首先,确保你已经安装了Java开发环境(JDK),并且能够正常运行Java程序。
其次,需要安装并配置好PostgreSQL数据库,并创建一个数据库实例。
二、连接数据库与PostgreSQL进行交互的第一步是建立连接。
Java提供了JDBC (Java Database Connectivity)来实现与各种数据库的连接。
下面是一个连接到PostgreSQL数据库的示例代码:```javaimport java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class PostgreSQLConnection {public static void main(String[] args) {Connection connection = null;try {// 加载驱动程序Class.forName("org.postgresql.Driver");// 连接数据库String url = "jdbc:postgresql://localhost:5432/mydatabase";String user = "myuser";String password = "mypassword";connection = DriverManager.getConnection(url, user, password); System.out.println("成功连接到数据库!");} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} finally {// 关闭连接try {if (connection != null) {connection.close();}} catch (SQLException e) {e.printStackTrace();}}}}```在上述代码中,首先使用`Class.forName`加载PostgreSQL的JDBC驱动程序。
java项目中的增删改查方法

java项目中的增删改查方法在Java项目中,增删改查(CRUD)操作是非常常见的需求。
无论是开发Web应用、移动应用还是后台系统,都会涉及到对数据的增加、删除、修改和查询操作。
在Java中,我们通常使用数据库来存储数据,而针对数据库的增删改查操作,我们通常会使用SQL语句来实现。
下面我们来看看在Java项目中,如何实现增删改查方法。
1. 增加(Create),在Java项目中,要实现数据的增加操作,通常需要先连接数据库,然后使用SQL语句向数据库中插入新的数据。
在Java中,我们可以使用JDBC(Java Database Connectivity)来连接数据库,使用PreparedStatement或者Statement来执行插入操作。
另外,如果我们使用了ORM框架(如Hibernate或MyBatis),我们也可以通过框架提供的API来实现数据的插入操作。
2. 删除(Delete),删除数据操作通常是根据某个条件从数据库中删除符合条件的数据。
在Java项目中,我们可以使用SQL的DELETE语句来实现数据的删除操作。
同样地,我们可以使用JDBC或者ORM框架提供的API来执行删除操作。
3. 修改(Update),修改数据操作通常是根据某个条件更新数据库中的数据。
在Java项目中,我们可以使用SQL的UPDATE语句来实现数据的更新操作。
同样地,我们可以使用JDBC或者ORM框架提供的API来执行更新操作。
4. 查询(Retrieve),查询数据操作是从数据库中检索数据。
在Java项目中,我们可以使用SQL的SELECT语句来实现数据的查询操作。
同样地,我们可以使用JDBC或者ORM框架提供的API来执行查询操作,并将查询结果返回给Java应用程序。
总的来说,在Java项目中实现增删改查方法,我们通常会使用JDBC来连接数据库并执行SQL语句,或者使用ORM框架来简化数据库操作。
无论是使用JDBC还是ORM框架,都需要对数据库操作有一定的了解,以便能够编写出高效、安全的增删改查方法。
数据库动态增加字段 java程序设计

数据库动态增加字段是指在不修改数据库结构的情况下,通过程序设计的方式向数据库中添加新的字段。
这种方法在开发过程中非常常见,可以提高数据的灵活性和可扩展性,同时也降低了数据库结构的维护成本。
在Java程序设计中,实现数据库动态增加字段通常涉及到以下几个方面的内容:1. 数据库设计与优化2. Java数据库操作3. 动态字段处理下面将分别从这三个方面展开对数据库动态增加字段的Java程序设计进行探讨。
一、数据库设计与优化在进行数据库动态增加字段之前,首先需要进行数据库设计与优化。
在设计数据库时,需要考虑到可能需要动态增加字段的情况,并为此留下相应的扩展空间。
要合理地设计表结构,将相似或相关的字段放在一起,以方便后续的动态增加操作。
在优化数据库时,可以考虑采用分布式数据库、集裙数据库等技术,以提高数据库的扩展性和性能。
二、Java数据库操作在Java程序设计中,常见的数据库操作方式包括JDBC、Hibernate、MyBatis等。
这些技术都可以用来实现数据库的动态增加字段。
以JDBC为例,可以通过编写SQL语句来向数据库中添加新的字段,然后通过Java程序进行调用和执行。
而使用Hibernate和MyBatis时,可以通过相应的映射配置文件或注解来实现动态字段的增加。
三、动态字段处理在实际的Java程序设计中,动态字段处理通常涉及到实体类的动态更新、数据库表结构的动态修改等内容。
在实体类的动态更新中,可以使用反射技术来动态改变实体类的字段结构。
而数据库表结构的动态修改则需要通过相应的SQL语句来实现。
需要注意的是,动态字段处理涉及到数据库的安全性和稳定性问题,因此在实现过程中需要格外谨慎。
总结:数据库动态增加字段在Java程序设计中是一个复杂而又重要的问题。
通过合理的数据库设计与优化、灵活的Java数据库操作以及严谨的动态字段处理,可以实现数据库结构的灵活性和可扩展性,为系统的持续发展提供了良好的支持。
java swing界面实现数据库增删改查

数据库程序设计大作业班级:2012级软件外包效劳一班**:7:。
时间:2013-6-191.功能描述1.1 功能简介用swing做出图形化界面形式,实现数据库的增删改查把员工表跟部门表连接起来,实现数据的增加,删除,修改,查找。
1.2 实现步骤〔1〕安装好虚拟机,并在其下确认oracle已安装成功〔可以在dos下输入相关命令来检查是否安装成功〕。
〔2〕在网络中心修改pc机上的VMware Network Adapter 的IP、子网页码〔默认〕、网关。
〔3〕修改虚拟机的IP、网掩码〔默认〕、网关,确保PC机上的网关和虚拟机的IP一致。
〔在控制面板——>网络和共享中心——>本地连接3——>属性中,修改IP、网掩码〕〔4〕在PC机的dos命令控制台ping虚拟机的IP,确保正常,能ping通〔即将虚拟机内外ping通〕。
〔5〕配置好虚拟机下的oracle的数据库和监听。
〔6〕在eclipse中编写相关代码,并用jtable实现图形化界面,用以实现与数据库的连接和操作数据库等功能。
〔7〕在eclipse中导入数据库的驱动。
〔8〕运行eclipse,查看运行结果。
2. 核心代码1.数据库连接package org.l*.dbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLE*ception;import java.sql.Statement;public class DatabaseConnection {public static void main(String[] args) {Connection conn = null;Statement stmt = null;ResultSet rs = null;try {Class.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:thin:192.168.0.128:1521/WFJ";conn = DriverManager.getConnection(url, "hr", "hr");stmt = conn.createStatement();String sql = "select * from departments";rs = stmt.e*ecuteQuery(sql);while (rs.ne*t()) {System.out.print(rs.getInt("department_id"));System.out.print("\t");System.out.print(rs.getString("department_name"));System.out.print("\t");System.out.print(rs.getInt("manager_id"));System.out.print("\t");System.out.print(rs.getInt("location_id"));System.out.println();}} catch (ClassNotFoundE*ception e) {e.printStackTrace();} catch (SQLE*ception e) {e.printStackTrace();} finally {try {if (rs != null) {rs.close();}if (stmt != null) {stmt.close();}if (conn != null) {conn.close();}} catch (SQLE*ception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}2.生成get set方法package edu;publicclass Country {private String department_id;private String department_name;private String area;private String population;public String get department_id() {return department_id;}publicvoid set department_id(String department_name) { = department_id;}public String get department_name() {return department_name;}publicvoid set department_name(String department_name) { this.department_name = department_name;}public String get manager_id() {return manager_id;}publicvoid set manager_id(String manager_id) {this.manager_id= manager_id;}public String get location_id() {return location_id;}publicvoid set location_id(String location_id n) {this.location_id = location_id;}}}3实现方法package tu*inghua;import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.Serializable;import java.sql.DriverManager;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;import java*.swing.JButton;import java*.swing.JFrame;import java*.swing.JLabel;import java*.swing.JScrollPane;import java*.swing.JTable;import java*.swing.JTe*tField;import java*.swing.table.DefaultTableModel;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;public class AppStudent e*tends JFrame{private JTe*tField department_idField;private JTe*tField department_nameField;private JTe*tField manager_idField;private JTe*tField location_idField;private JTable table;private DefaultTableModel model;private String[] columns = { "department_id", "department_name", "manager_id", "location_id"};private List data;private Student tmp;public AppStudent() {data = new ArrayList();getContentPane().setLayout(null);JLabel lblemployee = new JLabel("department_id");lblemployee.setBounds(12, 10, 220, 13);getContentPane().add(lblemployee);department_idField = new JTe*tField();department_idField.setBounds(100, 7, 96, 19);getContentPane().add(department_idField);department_idField.setColumns(10);JLabel lblAge = new JLabel("department_name");lblAge.setBounds(252, 10, 220, 13);getContentPane().add(lblAge);department_nameField = new JTe*tField();department_nameField.setBounds(365, 7, 96, 19);getContentPane().add(department_nameField);department_nameField.setColumns(10);JLabel lblStuno = new JLabel("manager_id");lblStuno.setBounds(12, 36, 220, 13);getContentPane().add(lblStuno);manager_idField = new JTe*tField();manager_idField.setColumns(10);manager_idField.setBounds(100, 33, 96, 19);getContentPane().add(manager_idField);JLabel lblClass = new JLabel("location_id");lblClass.setBounds(252, 36, 220, 13);getContentPane().add(lblClass);location_idField = new JTe*tField();location_idField.setColumns(10);location_idField.setBounds(365, 33, 96, 19);getContentPane().add(location_idField);JButton btnAdd = new JButton("增加");btnAdd.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {add();}});btnAdd.setBounds(75, 59, 77, 21);getContentPane().add(btnAdd);JButton btnDel = new JButton("删除");btnDel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {del();}});btnDel.setBounds(180, 59, 77, 21);getContentPane().add(btnDel);JButton btnUpdate = new JButton("更新");btnUpdate.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {update();}});btnUpdate.setBounds(280, 59, 77, 21);getContentPane().add(btnUpdate);JButton btnFind = new JButton("查找");btnFind.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {find();}});btnFind.setBounds(380, 59, 77, 21);getContentPane().add(btnFind);model = new DefaultTableModel(columns, 0);table = new JTable(model);table.addMouseListener(new MouseAdapter(){public void mouseClicked(MouseEvent e){int row = table.getSelectedRow();department_idField.setTe*t((String) table.getValueAt(row, 0));department_nameField.setTe*t((String) table.getValueAt(row, 2));manager_idField.setTe*t((String) table.getValueAt(row, 3));location_idField.setTe*t((String) table.getValueAt(row, 4));tmp = getInput();}});JScrollPane scrollPane = new JScrollPane(table);scrollPane.setBounds(12, 100, 571, 248);getContentPane().add(scrollPane);setDefaultCloseOperation(E*IT_ON_CLOSE);setLocationRelativeTo(null);setLocation(350,200);setSize(601, 380);setResizable(false);setVisible(true);}private Student getInput() {Student stu = new Student();stu.department_id= department_idField.getTe*t();stu.department_name = department_nameField.getTe*t();stu.manager_id = manager_idField.getTe*t();stu.location_id = location_idField.getTe*t();return stu;}private void add() {data.add(getInput());showTable();}private void del() {for (int i = 0; i < data.size(); i++){if (tmp.equals(data.get(i))){data.remove(i);break;}}showTable();}private void update() {Student stu = getInput();for (int i = 0; i < data.size(); i++){if (tmp.equals(data.get(i))) {data.remove(i);data.add(i, stu);break;}}showTable();}private void find() {removeRows();Student stu = getInput();for (int i = 0; i < data.size(); i++) {Student tmp = (Student) data.get(i);if (tmp.equals(stu)) {model.addRow(tmp.toArray());break;}}}private void showTable() {removeRows();for (int i = 0; i < data.size(); i++){Student stu = (Student) data.get(i);model.addRow(stu.toArray());}}private void removeRows() {while (model.getRowCount() > 0) {model.removeRow(0);}}public static void main(String[] args) {new AppStudent();}}class Studentimplements Serializable {public String department_id;public String department_name;public String manager_id;public String location_id;public boolean equals(Object obj) {return equals((Student) obj);}public boolean equals(Student obj) {boolean isdepartment_id = true;if (obj.department_id != null && !"".equals(obj.department_id)) { isdepartment_id = department_id.equals(obj.department_id);}boolean isdepartment_name = true;if (obj.department_name != null && !"".equals(obj.department_name)) { isdepartment_name = department_name.equals(obj.department_name);}boolean ismanager_id = true;if (obj.manager_id != null && !"".equals(obj.manager_id)) {ismanager_id = manager_id.equals(obj.manager_id);}boolean islocation_id = true;if (obj.location_id != null && !"".equals(obj.location_id)) {islocation_id = location_id.equals(obj.location_id);}return isdepartment_id&& isdepartment_name && ismanager_id && islocation_id;}public String[] toArray() {return new String[] { department_id, department_name, manager_id, location_id};}public void setVisible(boolean b) {// TODO Auto-generated method stub}}3. 实训总结通过这次实训我发现了自己许多的缺点和缺乏,我一定会好好找出缺乏,尽最大可能去改正,不断进步开展。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
String url = "jdbc:mysql://localhost:3306/star"; String user = "root"; String password = "8888"; Connection conn = DriverManager.getConnection(url,user,password);
建立连接
Connection conn
= DriverManager.getConnection(url, user,
password);
关键步骤分析
url格式:
JDBC: 子协议: 子名称//主机名: 端口/数据库名?属性名 = 属性值&…
如
:String url = “jdbc:mysql://localhost:3306/star”;
目
1
录
数据库简介
2
Java连接数据库
3
SQL编程介绍
4
“增删改查”操作
为什么需要数据库?
文件保存数据存在几大缺点
文件的安全性问题 文件不利于查询和对数据的管理 文件不利于存放海量数据 文件在程序中控制不方便
图书馆
数据库的基本特点
实现数据共享
数据共享包含所有用户可以同时存取数据库中的
︳Java程序设计
Java操作数据库技术
余 烨
yeyucvis@
本章学习提示
本章我们主要学习Java语言怎样操作数据库
了解常用的关系型数据库 熟悉JDBC的工作原理,掌握JDBC操作数据库所
用到的类的使用方法
掌握JDBC开发数据库的工作步骤 了解基本的CRUD操作
SQL编程语言
修改数据
UPDATE
tableName SET field=newValue [WHERE
field=value]
tableName表示数据表名称 field表示待修改的字段 value表示原始值,newValue表示新值 []
中的内容表示可选项
例如将info表中的id=1的记录的name值改为”vcc”
Eclipse中的配置
方式二:Window-〉Preferences-〉Java-〉Build Path〉User Library 点击“New”,输入User Library Name,比如:jdbc。 然后点击Add External Jars,包含进所需的驱动 mysql-connector-java-5.1.20-bin.jar 确定后,在前面所建的工程jdbc上右击,在菜单上 选择Build Path->Add Library-> User Library,选择前 面建的jdbc库,确定即可 如果后面再新建其他的工程,同样只需要在此工程 上右击,在Build Path中选择加入前面建的jdbc库。
关系型数据库
一个数据库由一个或多个表组成,每个表由行,列组成,
列代表字段(即属性),行代表记录,表中的记录应该是唯 一的 ,主关键字唯一 操作:搜索(查找)、连接操作、添加、更新、 删除
数据库简介
关系在外观上就是一个表格
在现实世界中一个数据表对应一个实体
实体
人 汽车 飞机 某一栋建筑物 ……
创建第一个Java连接数据库程序
关键步骤分析
注册驱动
Class.forName("com.mysql.jdbc.Driver");
建议采用这种方式,不会对具体的驱动类产生依赖 DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 会造成DriverManager中产生两个一样的驱动,并会对具体的 驱动类产生依赖 System.setProperty(“jdbc.drivers”, “com.mysql.jdbc.Driver”; 虽然不会对具体的驱动类产生依赖,但是注册不太方便,所 以很少使用
目
1
录
数据库简介
2
Java连接数据库
3 4
SQL编程介绍
“增删改查”操作
CRUD操作
在实际的项目开发过程中,60%的时间都是在与数 据库打交道,因此,应该熟练的掌握常用的一些数 据库操作。
SQL编程语言
查询数据
SELECT
field1,field2,… FROM tableName [WHERE
field=value]
field1,field2,field表示字段名称,value表示查询条件值 tableName表示数据表名称 []中的内容表示可选项 例如查询info表中的所有数据
代码的优化 Example01
目
1
录
数据库简介
2
Java连接数据库
3 4
SQL编程介绍
“增删改查”操作
回忆——Java连接数据库步骤1
加载驱动程序
创建Connection
注意:user和password可变,其它都不变
Java连接数据库步骤2
创建Statement
编写SQL语句(CRUD操作) 执行SQL语句
Java连接数据库步骤3
数据库操作完毕后,要释放资源
注意:释放资源的顺序为创建资源顺序的逆序
SQL编程语言
SQL(Structure Query Language)即,结构化查询语言 ,是专门用于用户和应用程序与数据库进行交互的语言
初学者学习SQL一般从数据库的增删改查(CRUD,
Create\Read\Update\Delete)学起
实体的信息就是存储在对应的数据表中
数据库简介
关系(数据表)
属性 元组
关系是一张表,表中的每行(即数据库中的每条记录)就
是一个元组,每列就是一个属性。 在二维表里,元组也 称为记录
以人为例建立数据表
人
姓名、性别、年龄、身高 Name、Sex、Age、Height
表:Person
目前主流的数据库
微软:SQL Server和Access(小型数据库)
SQL
Server易学易用,只能用在Windows上
IBM公司:DB2 和
Informix 和 MySQL
美国Sybase公司:Sybase 美国Oracle公司: Oracle
MySQL开发者为瑞典MySQL
SQL编程语言
从数据表中删除数据
DELETE
FROM tableName [WHERE field=value]
tableName表示数据表名称 WHERE表示条件,field=value表示当字段field的值为
value是才删除记录
[]表示可选项,即可以没有条件限制的删除数据 例如删除info表中的id=1的记录
向数据库中插入数据
INSERT
INTO tableName (field1,field2…) VALUES (value1,value2…) tableName代表数据表名称 Field1,field2代表数据表中字段的名称 value1,value2代表向field1和field2中插入的值 例如向info表中插入数据
JDBC简介
JDBC接口(API)包括两个层次:
面向应用的API:Java API,抽象接口,供应用程序开发人 员使用(连接数据库,执行SQL语句,获得结果) 面向数据库的API:Java Driver API,供开发商开发数据库 驱动程序用
Java Application JDBC API JDBC Manager JDBC Driver API JDBC-Net Driver JDBC-ODBC Bridge Driver JDBC-ODBC Bridge Driver Driver A Driver B
/downloads/ 版本: mysql-connector-java-5.1.20 /downloads/connector/j/
下载MySQL数据库驱动
在Eclipse中导入用于数据驱动的jar包
mysql是子协议,没有子名称,所以“:”后直接是“//”,本机名 localhost,端口3306,数据库star
String
url = “jdbc:mysql:///star“; 表示连接的是本机,并且端 口号为缺省的端口号 user, password可以用“属性名=属性值”的方式告诉数据库 其他参数如:useUnicode = true&characterEncoding = GBK 例
安装MySQL客户端软件(图形化用户界面):SQL-Front_Setup
在MySQL中新建数据库star,里面新建一个表格 employee,包含内容如下:
目
1
录
数据库简介
2
Java连接数据库
3 4
SQL编程介绍
“增删改查”操作
JDBC简介
JDBC(Java Data Base Connectivity, Java数据库连接),由一些接 口和类构成的API,为Java提供的一个平台无关的数据库标准 API,它提供了一个通用的SQL数据库存取机制,该机制为多 数关系型DBMS提供统一接口 JDBC分为JDBC API与JDBC驱动程序。前者即一组JDBC类库 ,使用这个类库可以以一种标准的方法、方便地访问数据库资 源(在java.sql类包中)。JDBC为访问不同的数据库提供了一 种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细 节问题。 JDBC的目标是使应用程序开发人员使用JDBC可以连接任何提 供了JDBC驱动程序的数据库系统,这样就使得程序员无需对 特定的数据库系统的特点有过多的了解,从而大大简化和加快 了开发过程。