就是直接调用一些类的方法去实现,修改账户密码不方便
且换了一个数据库,就也得重写数据库的业务逻辑
更改性质不好,安全性能也不好,因为使用的是Statement对象
容易出现sql注入问题
DriverManager.registerDriver(new Driver());
//注意这个new Drive()对象是com.mysql.jdbc下的一个类,因此需要导入com.mysql.jdbc.Driver
String url="jdbc:mysql://localhost:3306/库名?characterEncoding=utf-8";
//连接你要操作的数据库是那个主机上面的,3306的MySQL这个软件对应的端口号
//zking0618是你要操作的数据表所在的数据库(类似于在dos界面输入use zking0618这条指令)
//characterEncoding=utf-8是保证更新的数据(新增、修改)为中文时,不会出现乱码问题(idea默认是utf8编码格式)
String user="root";
String pwd="root对应的密码";
Connection conn=DriverManager.getConnection(url,user,pwd);
/*因为要处理异常,因此将定义一般在try块的上方*/
Statement st=conn.createStatement();
String sql="DQL语句/DML语句";
//若sql是DQL语句,需要用ResultSet来接收,通过next()方法和getString方法获取值
ResultSet rs=st.executeQuery(sql);
while(rs.next){
String 变量名=rs.getString("字段名");
/*通过字段名获取字段名对应的值,一般java的类的取名会和数据库的字段名保持一致
即变量名和字段名看起来是一样的内容
*/
......
}
/*若sql语句是DML语句,需要用int类型接收,因为返回的是受影响的行数
如果受影响行数不为0,则DML操作成功,否则失败
*/
int count=st.executeUpdate(sql);
/*释放资源的代码一般写在finally代码块中
因为无论你的程序是抛出异常还是没有异常,它都进行finally代码块去进行资源的关闭
关闭资源是调用的.close()方法,但是得要这个对象不为空才能去点方法
因为在释放资源前,需要进行非空判断
先关闭里面的资源,即st.close再去执行conn.close()
原理其实很简单,就是联系生活,外面的门和里面的门都要关,你先把外面的门关掉了,此时就没有办法去关闭里面的那条门了,因次就需要先关闭里面的资源,再去关闭外面的资源
*/
if (st != null) {
try {
st.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
}
}
/*如果是sql语句是DQL语句的话,在st.close()之前需要rs.close()*/
import com.mysql.jdbc.Driver;
import java.sql.*;
import java.util.Date;
public class JDBCTest02 {
public static void main(String[] args) {
Connection conn=null;
Statement st=null;
String url=null,user=null,pwd=null;
ResultSet rs=null;
try {
//1.注册驱动
DriverManager.registerDriver(new Driver());
//2.建立连接
url="jdbc:mysql://localhost:3306/zlz_temp?characterEncoding=utf-8";
user="root";
pwd="123456";
conn=DriverManager.getConnection(url,user,pwd);
//3.创建数据库操作对象
st=conn.createStatement();
//4.执行sql语句,sql语句里面的末尾不要写分号,查询用executeQuery()方法
String sql="SELECT * FROM copy_emp WHERE ename='SMITH'";
rs=st.executeQuery(sql);
System.out.println("SMITH的信息如下所示:");
//5.对结果进行处理
while(rs.next()){
System.out.println("工号为"+rs.getString("empno"));
System.out.println("名字为"+rs.getString("ename"));
System.out.println("职位为"+rs.getString("job"));
System.out.println("上级领导工号为"+rs.getString("mgr"));
System.out.println("入职日期"+rs.getString("hiredate"));
System.out.println("薪水"+rs.getString("sal"));
System.out.println("津贴"+rs.getString("comm"));
System.out.println("部门编号为"+rs.getString("deptno"));
}
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
//6。关闭资源,从内往外关(后面使用的先关闭)
if (rs != null) {
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
}
}
if (st != null) {
try {
st.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
}
}
}
}
}
/*修改名字为SMITH的员工的津贴为300元*/
import com.mysql.jdbc.Driver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCTest01 {
public static void main(String[] args) {
Connection conn=null;
Statement st=null;
String url=null,user=null,pwd=null;
try {
//1.加载驱动
DriverManager.registerDriver(new Driver());
//2。建立连接
url="jdbc:mysql:///zlz_temp?characterEncoding=utf-8";
user="root";
pwd="123456";
conn=DriverManager.getConnection(url,user,pwd);
//3.创建数据库操作对象
st=conn.createStatement();
//4.执行sql语句
String sql="UPDATE copy_emp SET comm=300 WHERE ename='SMITH'";
int count=st.executeUpdate(sql);
//5.对结果集进行处理
System.out.println(count>0?"更新成功":"更新失败");
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
//6.释放资源
if (st != null) {
try {
st.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
}
}
}
}
}