JDBC是通过IDEA来操作数据库
简单的例子
public class jdbcStart {
@Test
public void testjdbc()throws Exception
{
//1.注册驱动(确认使用哪个数据库)
Class.forName("com.mysql.cj.jdbc.Driver");
//2.连接数据库(获取到一个数据库连接对象)
String url="jdbc:mysql://127.0.0.1:3306/mysql_day2";
Connection connection = DriverManager.getConnection(url, "root", "123456");
//3.编写sql语句
String sql="select id, name, course_teacher_id from course";
//4.把sql语句发送给数据库,数据库会返回执行结果
Statement statement = connection.createStatement();//获取一个数据库对象
ResultSet resultSet = statement.executeQuery(sql);//执行sql语句,返回结果
//5.处理sql返回的结果
while(resultSet.next())
{
System.out.print(resultSet.getInt("id")+"\t");
System.out.print(resultSet.getString("name")+"\t");
System.out.println(resultSet.getInt("course_teacher_id"));
System.out.println("--------");
}
//6.释放资源
resultSet.close();
statement.close();
connection.close();
}
}
DriverManager类
1.注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
2.获取连接
public static Connection getConnection(String url,String user, String password)
Params:
url – a database url of the form jdbc:subprotocol:subname user – the database user on whose behalf the connection is being made password – the user's password
Returns:
a connection to the URL返回一个数据库连接对象
参数1.url:连接路径
例子: String url="jdbc:mysql://127.0.0.1:3306/mysql_day2";
如果出现的是乱码,在url后面加上
?useUnicode=true&characterEncoding=utf8,表示让该数据库以UTF8编码来处理数据
如:"jdbc:mysql://127.0.0.1:3306/mysql_day2?useUnicode=true&characterEncoding=utf8";
Connection类
1.获取执行SQL的数据库对象
普通执行SQL对象
Statement createStatement()
2.事务管理
开启事务:setAutoCommit(boolean autoCommit);true为自动提交事务;false为手动提交事务,即为开启事务
提交事务:commit()
回滚事务:rollback()
Statement类
1.执行SQL语句
int executeUpdate(String sql)
执行DML,DDL语句
Returns:
either (1) the row count for SQL Data Manipulation Language (DML) statements or (2) 0 for SQL statements that return nothing返回值:(1)DML语句(增删改)影响的行数
(2)DDL语句(建(删)库,建(删)表)执行后,执行成功返回0
ResultSet executeQuery(String sql)
Returns:
a ResultSet object that contains the data produced by the given query; never null返回结果集对象
处理sql语句的执行结果
1.处理DML语句执行结果
if(row>0)
{
增删改成功
}
ResultSet类
ResultSet的原理
1.ResultSet内部有一个指针,刚开始记录开始位置
2.调用next()方法,ResultSet内部指针会移动到下一行
3.我们可以通过调用getXxx("列名");来得到当前行的某一列数据
next()方法,判断改行是否有数据,没有返回false,并游标向下移动一行;