java的JDBC

Java提供专门用于操作数据库的API

JDBC(Java Data Base Connectivity).
1.下载JDBC-MySQL数据库连接器.
https://dev.mysql.com/downloads/connector/j/
在这里插入图片描述
在这里插入图片描述

选择第二个.
解压到D:\SQL语句
在这里插入图片描述
为了调试程序,可以重新命名为mysqlcon.jar
2.加载JDBC-MySQL数据库连接器
将mysqlcon.jar复制到D:\SQL语句目录下

try{ Class.forName(“com.mysql.cj.jdbc.Driver”);
}
catch(Exception e){}
这段代码要放在代码中
例如:
import java.awt.;
import java.awt.event.
;
import javax.swing.;
import java.sql.
;
import java.util.;
import javax.swing.table.
;

class JDBCJTable extends Frame
{
AbstractTableModel tm; //声明一个类AbstractTableModel对象
JTable table; //声明一个类JTable对象
JScrollPane scrollpane; //声明一个滚动面板对象
String titles[]; //二维表列名
Vector records; //声明一个向量对象
public void init(){
records = new Vector(); //实例化向量
tm = new AbstractTableModel(){
public int getColumnCount(){
return titles.length; //取得表格列数
}
public int getRowCount(){
return records.size(); //取得表格行数
}
public Object getValueAt(int row,int column){
if(!records.isEmpty()) //取得单元格中的属性值
return ((Vector)records.elementAt(row)).elementAt(column);
else
return null;
}
public String getColumnName(int column){
return titles[column]; //设置表格列名
}
public void setValueAt(Object value,int row,int column){
//数据模型不可编辑,该方法设置为空
}
public Class getColumnClass(int c){
return getValueAt(0,c).getClass(); //取得列所属对象类
}
public boolean isCellEditable(int row,int column){
return false;//设置单元格不可编辑,为缺省实现
}
};
}

public void start() throws SQLException, ClassNotFoundException{

	**// 加载 jdbc-odbc 桥驱动程序
	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");**

	//定义JDBC URL
	String url= "jdbc:odbc:tab";

	//得到与数据库的连接
	Connection connection = DriverManager.getConnection (url);

	//显示查询结果。
	Statement stmt = connection.createStatement();
	ResultSet rs = stmt.executeQuery("select * from authors");
	ResultSetMetaData meta = rs.getMetaData();	//得到元数据

	int cols = meta.getColumnCount();
	System.out.println( cols );
	titles = new String[ cols ];
	for( int i=0; i<cols; i++){
		titles[i] = meta.getColumnName(i+1);	//得到列名
	}

	records.removeAllElements();//初始化向量对象
	while(rs.next()){
		Vector rec_vector=new Vector();
		//从结果集中取数据放入向量rec_vector中
		for ( int i=0; i<titles.length; i++ ){
			rec_vector.addElement(rs.getObject(i+1).toString());
		}
		records.addElement(rec_vector);
	}

	//定制表格:
	table=new JTable(tm);	//生成自己的数据模型
	table.setToolTipText("显示全部查询结果");	//设置帮助提示
	table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);	//设置表格调整尺寸模式
	table.setCellSelectionEnabled(false);	//设置单元格选择方式
	table.setShowVerticalLines(true);
	table.setShowHorizontalLines(true);
	scrollpane=new JScrollPane(table);		//给表格加上滚动条
	add( scrollpane );
	tm.fireTableStructureChanged();//更新表格
}

public static void main( String [] args ){
	JDBCJTable f = new JDBCJTable();
	f.init();
	try{
		f.start();
	}catch( Exception e){ e.printStackTrace(); }
	f.setSize( 400,300);
	f.setTitle( "Show Database in JTable" );
	f.show();
	f.addWindowListener( new WindowAdapter(){
		public void windowClosing( WindowEvent e){System.exit(0);}
	});
}

}

3.连接数据库
java.sql包中的DriverManager类有两个用于建立连接的类方法(static方法)
Connection getConnection(java.lang.String,java.lang.String,java.lang.String)
Connection getConnection(java.lang.String)

Connection con;
String uri=
“jdbc:mysql://192.168.100.1:3306/Book?useSSL=false&serverTimezone=GMT”;
String user=“root”;
String password="";
try{
con=DriverManager.getConnection(uri,user,password);//连接代码
}
catch(SQLException e){
System.out.println(e);
}
汉字问题
记得启动MySQL数据库服务器
后续源文件都要保存在D:\SQL语句中,编译通过后,运行如下:
D:\SQL语句>java -cp mysqlcon.jar;主类

查询操作
得到SQL查询语句
try{ Statement sql=con.createStatement();
}
catch(SQLException e){}
声明对象,让创建的连接对象con调用createStatement()创建这个SQL对象
处理查询结果
ResultSet rs=sql.executeQuery(“SELECT*FROM bookList”);
ResultSet对象是由按"列"(字段)组织的数据行构成的
内存的结果集rs的列数是4列,与数据库的表bookList的列数相同,
ISBN name price chubanDate
对于
ResultSet rs=sql.executeQuery(“SELECT name,price FROM bookList”);
内存的结果集对象rs列数只有两列,name price
关闭连接
如果在代码
ResultSet rs=sql.executeQuery(“SELECT * FROM bookList”);
之后立刻关闭连接
con.close();
程序将无法获取rs中的数据

Example14_1.java
import java.sql.;
public class Example14_1{
public static void main(String args[]){
Connection con=null;
Statement sql;
ResultSet rs;
try{ //加载JDBC-MySQL8.0.22连接器;
Class.forName(“com.mysql.cj.jdbc.Driver”);
}
catch(Exception e){}
String uri=“jdbc:mysql://localhost:3306/Book?”+
“useSSL=false&serverTimezone=CST&characterEncoding=utf-8”;
String user=“root”;
String password="";
try{
con=DriverManager.getConnection(uri,user,password);//连接
}
catch(SQLException e){
System.out.println(e);
}
try{
sql=con.createStatement();
rs=sql.executeQuery("SELECT
FROM bookList");
while(rs.next()){
String number=rs.getString(1);
String name=rs.getString(2);
float price=rs.getFloat(3);
Date date=rs.getDate(4);
System.out.printf("%s,%s,%.2f,%s\n",
number,name,price,date);
}
con.close();
}
catch(SQLException e){
System.out.println(e);
}
}
}

在这里插入图片描述
在这里插入图片描述
"";""后面还有一个空格
记得点赞和关注哦,更多内容还将发布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

低调的小哥哥

你的关注就是我为你服务的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值