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("SELECTFROM 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);
}
}
}
"";""后面还有一个空格
记得点赞和关注哦,更多内容还将发布