- Java与数据库的操作总结
1. 导入相应数据库的包
2. 数据库的连接记住两个字:贾链。——先加载驱动,再连接数据库。
3. 在Connection连接下获取PreparedStatement,在此类中进行对数据库的操作。
4. 断开连接(以先大后小的原则)先关闭resultset,在PreparedStatement,再断开Connection连接。 - 整个流程需要的环境:
1. 附加相应的数据库的驱动程序jdbc
2. 安装相应的数据库软件
3. 创建数据库
代码如下:
package dao;//加载,连接数据库
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.util.ArrayList;
public class jzdb {
private static final String URL="jdbc:mysql://localhost:3306/news";
private static final String USER="root";
private static final String PASSWORD="123456";
private Connection conn;
private PreparedStatement state;
private ResultSet re;
public jzdb() throws SQLException {
try {
Class.forName("com.mysql.jdbc.Driver");//加载驱动
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//
conn = DriverManager.getConnection(URL,USER,PASSWORD);//创建连接
state = conn.prepareStatement("select title,context,id from news");
if(conn != null) {
System.out.print("数据库连接成功");
}
}
public java.util.List<news> shuchu() throws SQLException//输出表的信息,返回一个list
{
java.util.List<news> list = new ArrayList<>();
while (re.next()) {
list.add(new news(re.getString("title"), re.getString("context"), Integer.parseInt(re.getString("id"))));
}
return list;
}
public int insert(news s) throws SQLException//插入数据
{
state = conn.prepareStatement("insert into news(title,context) values(?,?) ");
state.setString(1,s.getTitle());
state.setString(2, s.getContext());
int rs = state.executeUpdate();
return rs;
}
public int delete(int id) throws SQLException//删除对应id的新闻,返回影响行
{
state = conn.prepareStatement("delete from news where id = ?");
state.setInt(1, id);
int re = state.executeUpdate();
return re;
}
public int Updata(news s) throws SQLException //输入一个news对象,修改表中的内容
{
state = conn.prepareStatement("update news set title = ?,context = ? where id=?");
state.setString(1, s.getTitle());
state.setString(2, s.getContext());
state.setInt(3, s.getId());
int i = state.executeUpdate();
return i;
}
public void close() throws SQLException//关闭表,先大后小
{
re.close();
state.close();
conn.close();
}
}
具体解析:
Class.forName("com.mysql.jdbc.Driver"); //加载驱动信息及mysql的相应驱动
Connection conn = DriverManager.getConnection(URL,USER,PASSWORD);//获取连接
//URL资源定位(协议+数据库名+本地主机+端口号+数据库名)jdbc:mysql://localhost:3306/news
//USER 用户名,PASSWORD 密码
Statement :实现数据库的操作(增删改查),需要相应的sql语句来实现。
prepareStatement:statement的升级版。prepareStatement中的executeUpdate方法实现数据的增删改;executeQuery数据的查询操作。
如下:
state = conn.prepareStatement("insert into news(title,context) values(?,?) ");
state.setString(1,s.getTitle());
state.setString(2, s.getContext());
int rs = state.executeUpdate();
return rs;
ResultSet:用于接收查询操作的结果。(ResultSet re = state.executeQuery();)re.getStrng(字段名)获取相应对象的数据。
Re.next():将游标指向第一个查询到的数据,每执行一次浮标执行下一行数据。
可能遇到的问题:
- 在设置连接数据库时,固定的语法出现错误,及加载驱动的com.mysql.jdbc.Driver输入错误,还有就是URL输入错误,URL一般为固有格式,一般相同。
- 在数据的增删改查时,sql语句出错,可以在数据库中进行检查。