JDBC基本:加载驱动,执行sql,增删改
package jdbc;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import com.mysql.jdbc.Connection;
public class helloJDBC {
public static void main(String[] args) {
// TODO Auto-generated method stub
java.sql.Connection c = null;
Statement statement=null;
try {
Class.forName("com.mysql.jdbc.Driver");//加载驱动
c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root","755757");//数据库基本信息 how2java是数据库的名字
statement = c.createStatement();
String sql = "insert into hero values(null,'提莫',313.0,50) ";
for(int i=0;i<50;i++) {
statement.execute(sql);
}
System.out.println("obj is"+ sql);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
if(statement!=null)
try {
statement.close();
} catch (SQLException e2) {
// TODO: handle exception
e2.printStackTrace();
}
else if(c!=null) {
try {
c.close();
} catch (SQLException e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
}
}
基本框架是这样的,不同的是修改sql语句:
增加:
insert into hero values(null,'提莫',313.0,50)
删除
delete from hero where id = 5
修改
update hero set name = 'name 5' where id = 3
标题JDBC:Preparestatement
String sql = "insert into hero values(null,?,?,?)";
try (Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root", "admin");
// 根据sql语句创建PreparedStatement
PreparedStatement ps = c.prepareStatement(sql);
) {
// 设置参数
ps.setString(1, "提莫");
ps.setFloat(2, 313.0f);
ps.setInt(3, 50);
// 执行
ps.execute();
}
创建ps之后,设置不同的参数,setString,setFloat.
标题execute与executeUpdate的区别
不同1:
execute可以执行查询语句
然后通过getResultSet,把结果集取出来
executeUpdate不能执行查询语句
不同2:
execute返回boolean类型,true表示执行的是查询语句,false表示执行的是insert,delete,update等等
executeUpdate返回的是int,表示有多少条数据受到了影响
获取元数据
DatabaseMetaData dbmd = c.getMetaData();
// 获取数据库服务器产品名称
System.out.println("数据库产品名称:\t"+dbmd.getDatabaseProductName());
// 获取数据库服务器产品版本号
System.out.println("数据库产品版本:\t"+dbmd.getDatabaseProductVersion());
// 获取数据库服务器用作类别和表名之间的分隔符 如test.user
System.out.println("数据库和表分隔符:\t"+dbmd.getCatalogSeparator());
// 获取驱动版本
System.out.println("驱动版本:\t"+dbmd.getDriverVersion());
System.out.println("可用的数据库列表:");
// 获取数据库名称
ResultSet rs = dbmd.getCatalogs();
while (rs.next()) {
System.out.println("数据库名称:\t"+rs.getString(1));
}
事务
将connection关闭自动提交,使用手动提交,便会自动使用事务
c.setAutoCommit(false);
statement执行完sql之后:
c.commit();
要么都成功,要么都失败。
ORM=Object Relationship Database Mapping
对象和关系数据库的映射