一、加载驱动:

  new com.mysql.jdbc.Driver();或者Class.forName(“com.mysql.jdbc.Driver”);

二、连接数据库:

  Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名","root", "密码");

三、访问操作:

  Statement state=con.createStatement();

  String  sql="...SQL语句.......";

  state.(各种执行函数加入str语句就好了);

  java中的ResulrSet可以用于存储数据库执行之后的结果集;

四、关闭链接:

  各种close();

以下是个样例代码(其中使用了一些自己定义的类,如user,book等):

package Members;
import java.sql.*;
import java.util.ArrayList;
import java.util.Comparator;

import Frame.Top;
public class MyDatabase {
	public ResultSet result;
	private Connection con;
	private Statement state;
	ArrayList<Book> books=new ArrayList<Book>();
	ArrayList<Attention> attentions=new ArrayList<Attention>();
	/*
	 * 以下为两种连接数据库的方式,
	 * root登陆、游客和顾客登陆
	 */
	public MyDatabase(){
		try{
			new com.mysql.jdbc.Driver();
			con=DriverManager.getConnection("jdbc:mysql://localhost:3306/SecondMarket","user", "passwords");
			state=con.createStatement();
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public MyDatabase(String name,String passwords) {
		try{
			new com.mysql.jdbc.Driver();
			con=DriverManager.getConnection("jdbc:mysql://localhost:3306/SecondMarket", name, passwords);
			state=con.createStatement();
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	/*
	 * 根据传入的字符串执行select语句
	 * 字符串数组第一位表示表名字,其他各位分别代表
	 * 要查询的属性名称
	 */
	public void Query(String[] mems) throws SQLException{
		String sql="select "+mems[1];
		for(int i=2;i<mems.length;i++)
			sql+=","+mems[i];
		sql+=" from "+mems[0];
		System.out.println(sql);
		result=state.executeQuery(sql);
	}
	/*
	 * 根据传入的sql语句,执行相应的更新操作
	 * 成功执行返回true,执行失败返回false
	 */
	public boolean Update(String sql){
		try {System.out.println(sql);
			state.execute(sql);
			return true;
		} catch (SQLException e) {
			return false;
		}
	}
	/*
	 * 关闭数据库连接
	 */
	public void closeDatabase() throws SQLException{
		result.close();
		state.close();
		con.close();
	}
	/*
	 * 将Query()函数所执行的sql语句所得到的resultset
	 * 转化成二位字符串数组并将其返回
	 */
	public String[][] ResultToarray() throws SQLException{
		result.last();
		String[][] str=new String[result.getRow()][result.getMetaData().getColumnCount()];
		result.beforeFirst();
		int i=0;
		while(result.next()){
			for(int j=0;j<str[i].length;j++)
				str[i][j]=result.getString(j+1);
			i++;
		}
		result.first();
		return str;
	}
	/*
	 * 从数据库中的book表中将所有的书籍信息读出来
	 * 放到book数组中(无返回值)
	 */
	public void GetBooks() throws SQLException{
		String sql="select *  from book";
		ResultSet r=state.executeQuery(sql);
		books.clear();
		while(r.next()){
			books.add(new Book(r.getString(1),r.getString(2),r.getString(3), r.getString(4), r.getDouble(5),r.getInt(6), r.getInt(7), r.getString(8), r.getString(9), r.getString(10), r.getInt(11), r.getDouble(12), r.getString(13)));
		}
	}
	/*
	 * 将图书按照打折从小到大排序,这里由于
	 * 打折排序不涉及表的连接,所以是对读出来的
	 * 书籍直接排序,没有在数据库表中进行操作
	 */
	public boolean SortBooksByDiscount(){
		try{
			if(books.size()<1)
				GetBooks();
			books.sort(new Comparator<Book>() {
				public int compare(Book a,Book b){
					if(a.getDiscount()>b.getDiscount())
						return 1;
					return -1;
				}
			});
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
		return true;
	}
	/*
	 * 将图书按照销售量从大到小排序
	 * 同样,由于没有涉及表的连接,所以这里也是直接用代码排序
	 */
	public boolean SortBooksBySold_number(){
		try{
			if(books.size()<1)
				GetBooks();
			books.sort(new Comparator<Book>() {
				public int compare(Book a, Book b) {
					if(a.getSold_number()>b.getSold_number())
						return -1;
					return 1;
				}
			});
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
		return true;
	}
	/*
	 * 按照书籍的关注量从大到小排序,由于这步操作需要将表attention和book连接起来
	 * 所以使用sql语句直接访问数据库
	 */
	public boolean SortBooksByAttention(){
		try{
			String sql="create table temp select book_id,count(user_id) as 'num' from attention group by book_id order by 'num' desc";
			state.execute(sql);
			sql="select book.* from book left join temp on book.book_id=temp.book_id order by num desc";
			ResultSet r=state.executeQuery(sql);
			sql="drop table temp";
			books.clear();
			while(r.next()){
				books.add(new Book(r.getString(1),r.getString(2),r.getString(3), r.getString(4), r.getDouble(5),r.getInt(6), r.getInt(7), r.getString(8), r.getString(9), r.getString(10), r.getInt(11), r.getDouble(12), r.getString(13)));
			}
			state.execute(sql);
		}catch(Exception e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
	/*
	 * 执行买书操作,其中funforsellbook是一个在数据库中自定义的一个函数
	 * 买书成功返回true,失败则返回false
	 */
	public boolean GetBook(String book_id,int score){
		String sql="Select fun_for_sellbook('"+book_id+"','"+score+"')";
		try{System.out.println(sql);
			ResultSet r=state.executeQuery(sql);
			if(r.next())
				if(r.getInt(1)==1)
					return true;
		}catch(Exception e){
			return false;
		}
		return false;
	}
	/*
	 * 根据传入的用户账号和用户密码,查找数据库,看该用户是否存在,密码是否正确
	 * user保存该用户的信息
	 * 成功执行返回true,执行失败返回false;
	 */
	public boolean UserLogin(String name,String passwords,User user){
		try{
			String sql="select * from user where user_id= '"+name+"' and passwords= '"+passwords+"'";
			ResultSet r=state.executeQuery(sql);
			if(r.next()){
				user.setCollege(r.getString(3));
				user.setHobby(r.getString(8));
				user.setMajor(r.getString(4));
				user.setPasswords(r.getString(2));
				user.setPhone(r.getString(6));
				user.setScore(r.getInt(9));
				user.setUser_id(r.getString(1));
				user.setUser_name(r.getString(7));
				user.setSold_number(r.getInt(5));
				user.setDormitory(r.getString(10));
				return true;
			}
			else{
				return false;
			}
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
	}
	/*
	 * 根据传入的用户的账号,查找他所关注的书籍
	 * 并以字符串的形式返回其所关注的书籍,若没有关注则返回null
	 */
	public String GetAttentionBooks(String user_id){
		String sql="select book_name from book where book_id in(" +
				"select book_id from attention where user_id='"+user_id+"')";
		String temp="";
		try{
			ResultSet r=state.executeQuery(sql);
			while(r.next()){
				temp+=r.getString(1)+"\n";
			}
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}
		return temp;
	}
	/*
	 * 根据传入的用户的账号,返回该用户的信息
	 */
	public User getUser(String user_id){
		User user=new User();
		try{
			String sql="select * from user where user_id= '"+user_id+"'";
			ResultSet r=state.executeQuery(sql);
			if(r.next()){
				user.setCollege(r.getString(3));
				user.setHobby(r.getString(8));
				user.setMajor(r.getString(4));
				user.setPasswords(r.getString(2));
				user.setPhone(r.getString(6));
				user.setScore(r.getInt(9));
				user.setUser_id(r.getString(1));
				user.setUser_name(r.getString(7));
				user.setSold_number(r.getInt(5));
				user.setDormitory(r.getString(10));
				return user;
			}
			else{
				return null;
			}
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}
	}
	public ArrayList<Book> GetArrayBooks(){
		return books;
	}
	/*
	 * 用户注册,完成对user表的插入操作,即将新注册的
	 *合法用户添加到表中
	 *成功返回true,失败返回false
	 */
	public boolean UserRegister(User user){
		try{
			String sql="insert into user(user_id,passwords,college,major,phone,user_name,hobby,dormitory,grade) " +
					"values('"+user.getUser_id()+"','"+user.getPasswords()+"','"+user.getCollege()+"','"+user.getMajor()+"','"+
					user.getPhone()+"','"+user.getUser_name()+"','"+user.getHobby()+"','"+user.getDormitory()+"','"+user.getGrade()+"')";
			System.out.println(state.execute(sql));
			
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
		return true;
	}
	/*
	 * 修改用户信息,成功返回true,失败返回false
	 */
	public boolean ChangeMessage(User user){
		try{
			String sql="delete from user where user_id= '"+user.getUser_id()+"'";
			state.execute(sql);
			if(UserRegister(user)){
				return true;
			}else{
				return false;
			}
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
	}
	/**
	 * huode xinxi  fanhui jieguo 
	 * @return
	 */
	public ArrayList<Class> GetArrayClass(){
		try{
			String sql="select * from class";
			ResultSet r=state.executeQuery(sql);
			ArrayList<Class> c=new ArrayList<Class>();
			c.clear();
			while(r.next()){
				c.add(new Class(r.getInt(1), r.getString(2), r.getInt(3)));
			}
			return c;
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}
	}
	/**
	 * 获得一个时间,作为新添加书籍的id
	 * 因为时间不唯一,以此保证书籍id的唯一性
	 */
	private String GetDateTime(){
		try{
			String sql="select now()";
			ResultSet r=state.executeQuery(sql);
			if(r.next())
				return r.getString(1);
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}
		return null;
	}
	/*
	 * 执行和取消关注的操作,b为true表示要关注,b为false表示取消关注
	 * 然后根据user_id和book_id在attention执行插入或者删除操作
	 * 成功返回true,失败返回false
	 */
	public boolean PayAttention(boolean b,String user_id,String book_id){
		String sql="";
		if(b)
			sql="insert into attention values('"+book_id+"','"+user_id+"')";
		else
			sql="delete from attention where user_id='"+user_id+"' and book_id='"+book_id+"'";
		return Update(sql);
	}
	/*
	 * 执行上传书籍操作,根据传入的书籍信息在book表中将该书籍插入
	 * 成功插入返回true,执行失败返回false
	 */
	public boolean UpLoadBook(Book book){
		try{
			 String temp=GetDateTime();
			 String str="";
			 for(int i=0;i<temp.length();i++)
				 if(Character.isDigit(temp.charAt(i)))
					 str+=temp.charAt(i);
			book.setBook_id(str);
			System.out.println(book);
			String sql="insert into book(book_id,user_id,author," +
					"publisher,price,remain_number,`key`,`language`," +
					"book_name,class_id,publish_date,discount) values('" +
					book.getBook_id()+"','"+book.getUser_id()+"','"+book.getAuthor()+"','"+
					book.getPublisher()+"','"+book.getPrice()+"','"+book.getRemain_number()+"','"+
					book.getKey()+"','"+book.getLanguage()+"','"+book.getBook_name()+"','"+
					book.getClass_id()+"','"+book.getPublish_date()+"','"+book.getDiscount()+"')";
			state.execute(sql);
			return true;
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
	}
	/*
	 * 获得该书籍的受关注情况
	 * 返回值int表示有多少人关注此书
	 */
	public int CountAttentionNumber(String book_id){
		int n=0;
		try{
			String sql="select count_attention('"+book_id+"')";
			ResultSet r=state.executeQuery(sql);
			if(r.next())
				n=r.getInt(1);
		}catch(Exception e){
			e.printStackTrace();
		}
		return n;
	}
	/*
	 * 根据传入的class_id获得该编号对应的书籍类的名字
	 */
	public String GetClassName(int class_id){
		String sql="select class_name from class where class_id='"+class_id+"'";
		try{
			ResultSet r=state.executeQuery(sql);
			if(r.next())
				return r.getString(1);
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}
		return null;
	}
	public void getBookByKey(String key){
		String sql="select * from book where book_name like '%"+key+"%'";
		try{
			result=state.executeQuery(sql);
			String[][] t=ResultToarray();
			for(int i=0;i<t.length;i++){
				for(int j=0;j<t[0].length;j++)
					System.out.print(t[i][j]+" ");
				System.out.println();
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public static void main(String[] Args) throws SQLException{
		MyDatabase db=new MyDatabase();
		String[] str={"Book","book_id","book_name"};
		int n=db.CountAttentionNumber("b2");
		System.out.println(db.GetAttentionBooks("13055111"));
		db.getBookByKey("英语");
		db.closeDatabase();
	}
}