public class ConnectionDemo1
{
// public static String DBRIVER="com.mysql.jdbc.Driver";
public static void main(String[] args) {
try {
//加载一个驱动程序
//Class.forName(DBRIVER);
Class.forName("com.mysql.jdbc.Driver");
}catch(Exception e)
{
e.printStackTrace();
}
}
}
如果数据库驱动程序可以正常加载,下面可以使用DriverMannager类连接数据库。
在DriverMannager中,提供主要操作就是得到一个数据库连接,getConnection()方法就是取得一个连接对象,此方法返回的类型是Connection对象。
了解了DriverMannager类之后,再看Connection接口,因为所有数据库的操作都是从此接口开始。
连接数据库
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* @Auther:jiang
* @Date:2021/12/11-12-14:43
* @Description:
* @version:1.7
*/
public class ConnectionDemo1
{
public static final String user="root";
public static final String password="root";
//最后面的是数据库的名称
public static final String address="jdbc:mysql://localhost:3306/userdb1";
// public static String DBRIVER="com.mysql.jdbc.Driver";
public static void main(String[] args)
{
Connection conn=null;
try {
//加载一个驱动程序
//Class.forName(DBRIVER);
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e)
{
e.printStackTrace();
}
try {
conn= DriverManager.getConnection(address,user,password);
}catch (SQLException e)
{
e.printStackTrace();
}
System.out.println(conn);
try {
conn.close(); //关闭数据库
}catch (SQLException e)
{
e.printStackTrace();
}
}
}
程序的运行结果不为空,此时数据库已经连接成功!
数据库连接后,下面就可以对数据库进行操作了,如果要对数据库操作,需要用到Statement接口完成。
Statement接口的常用方法
序号 | 方法 | 描述 |
---|---|---|
1 | executeUpdate(String sql) | 执行数据库更新的SQL语句,如果insert、update、delete等语句,返回更新的记录数 |
2 | executeQuery(String sql) | 执行数据库查询操作,返回一个结果集对象 |
3 | addBatch() | 增加应该待执行的SQL语句 |
4 | executeBatch() | 批量执行SQL语句 |
5 | close() | 关闭statement操作 |
6 | execute(String sql) | 执行SQL语句 |
String sql = "insert into users(id,name,password)" + "values(3,'chenshengfang','18278335677')";
Connection conn = null;
Statement st = null;
conn = DriverManager.getConnection(url, user, passwd);
st = conn.createStatement();
st.executeUpdate(sql);
st.close();
conn.close();
使用SQl中的select语句可以查询出数据库的全部内容,在JDBC的操作中数据库的所有查询记录将使用ResultSet进行接收,并使用ResultSet取得内容。
如果现在进行数据库的查询,则需要使用Statement接口定义的executeQuery()方法,此方法返回值为一个ResultSet对象,此方法存放着所有的查询结果。
ResultSet常用的方法
序号 | 方法 | 描述 |
---|---|---|
1 | next() | 将指针转移到下一行 |
2 | getInt(int columnIndex) | 以整数的形式按列的编号取得指定列的内容 |
3 | getInt(String columnName) | 以整数形式取得指定列的内容 |
4 | getFloat(int clolumnIndex) | 以浮点数的形式按列的编号取得指定的内容 |
public class Tuser1
{
public static final String user="root";
public static final String password="root";
public static final String address="jdbc:mysql://localhost:3306/userdb1";
public static void main(String[] args) {
Statement stmt=null;
Connection conn=null;
try {
conn= DriverManager.getConnection(address,user,password);
}
catch (Exception e)
{
e.printStackTrace();
}
ResultSet rs=null;
String sql="select id,name,password from users";
try {
Class.forName("com.mysql.jdbc.Driver");
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}catch ( Exception e)
{
e.printStackTrace();
}
try {
while(rs.next())
{
int id=rs.getInt("id");
String name=rs.getString("name");
String password=rs.getString("password");
System.out.println(id);
System.out.println(name);
System.out.println(password);
rs.close();
stmt.close();
conn.close();
}
}catch (Exception e)
{
e.printStackTrace();
}
}
}
PreparedStatement是statement的接口,属于预处理操作,与statement不同的是,PreparedStatement在操作时,先在表中准备一条sql语句,但此时SQL语句的具体内容暂不设置,而是之后在设置。
PreparedStatement常用的方法
序号 | 方法 | 描述 |
---|---|---|
1 | executeUpdate() | 执行设置的预处理SQL语句 |
2 | setInt(int parameterIndex,int x) | 执行数据库查询操作,返回ResultSet |
3 | setFloat(int parameterIndex,float x) | 指定要设置的索引编号,并设置浮点数内容 |
4 | … | … |
示例:
String sql = "insert into users(id,name,password)" + "values(?,?,?)";
Class.forName(DBDRIVER)
Connection conn = null;
PreparedStatement ps=null;
conn = DriverManager.getConnection(url, user, passwd);
ps = conn.prepareStatement(sql);
ps.setInt(1, 17);
ps.setString(2, "tom");
ps.setString(3, "123");
ps.executeUpdate();
ps.close();
conn.close();