jdbc连接数据库

java.sql.DriverManager用来装载驱动程序,获取数据库连接。
java.sql.Connection完成对某一指定数据库的联接
java.sql.Statement在一个给定的连接中作为SQL执行声明的容器,他包含了两个重要的子类型。
Java.sql.PreparedSatement 用于执行预编译的sql声明
Java.sql.CallableStatement用于执行数据库中存储过程的调用
java.sql.ResultSet对于给定声明取得结果的途径

示例代码——连接mysql:
Java代码 复制代码 收藏代码
  1. package cn.itcast.cd.jsp.domain;
  2. import java.util.Date;
  3. public class Student {
  4. private int id;
  5. private String name;
  6. private String sex;
  7. private int age;
  8. private Date birthday;
  9. public int getId() {
  10. return id;
  11. }
  12. public void setId(int id) {
  13. this.id = id;
  14. }
  15. public String getName() {
  16. return name;
  17. }
  18. public void setName(String name) {
  19. this.name = name;
  20. }
  21. public String getSex() {
  22. return sex;
  23. }
  24. public void setSex(String sex) {
  25. this.sex = sex;
  26. }
  27. public int getAge() {
  28. return age;
  29. }
  30. public void setAge(int age) {
  31. this.age = age;
  32. }
  33. public Date getBirthday() {
  34. return birthday;
  35. }
  36. public void setBirthday(Date birthday) {
  37. this.birthday = birthday;
  38. }
  39. @Override
  40. public String toString() {
  41. return "Student [id=" + id + ", name=" + name + ", sex=" + sex
  42. + ", age=" + age + ", birthday=" + birthday + "]";
  43. }
  44. }
  45. package cn.itcast.cd.utils;
  46. import java.sql.Connection;
  47. import java.sql.DriverManager;
  48. import java.sql.ResultSet;
  49. import java.sql.SQLException;
  50. import java.sql.Statement;
  51. /**
  52. * 操作JDBC的工具类
  53. * @author dendy
  54. * @version 1.0
  55. */
  56. public class DbUtils {
  57. private static String url = "jdbc:mysql://localhost/jdbc";
  58. private static String user = "root";
  59. private static String password = "admin";
  60. private DbUtils(){ //不允许工具类拥有实例对象
  61. }
  62. //只需要一份驱动,所以放到静态代码块中
  63. static {
  64. try {
  65. //利用Class.forName调用com.mysql.jdbc.Driver的静态代码块,得到一个Driver对象的实例,而不需要手动创建.
  66. Class.forName("com.mysql.jdbc.Driver");
  67. } catch (ClassNotFoundException e) {
  68. e.printStackTrace();
  69. }
  70. }
  71. /**
  72. * 获得数据库连接
  73. * @return 返回Jave.sql.Connection实例,发生异常返回null.
  74. */
  75. public static Connection getConnection(){
  76. try {
  77. Connection connection = DriverManager.getConnection(url, user, password);
  78. return connection;
  79. } catch (SQLException e) {
  80. e.printStackTrace();
  81. }
  82. return null;
  83. }
  84. /**
  85. * 关闭Connection、Statement、ResultSet对象.
  86. * @param connection
  87. * @param statement
  88. * @param resultSet
  89. */
  90. public static void close(Connection connection, Statement statement, ResultSet resultSet){
  91. close(connection);
  92. close(statement);
  93. close(resultSet);
  94. }
  95. /**
  96. * 关闭Connection、Statement对象.
  97. * @param connection
  98. * @param statement
  99. */
  100. public static void close(Connection connection, Statement statement){
  101. close(connection);
  102. close(statement);
  103. }
  104. /**
  105. * 关闭Connection对象
  106. * @param connection
  107. */
  108. public static void close(Connection connection){
  109. try {
  110. connection.close();
  111. } catch (SQLException e) {
  112. e.printStackTrace();
  113. }
  114. }
  115. /**
  116. * 关闭Statement对象
  117. * @param statement
  118. */
  119. public static void close(Statement statement){
  120. try {
  121. statement.close();
  122. } catch (SQLException e) {
  123. e.printStackTrace();
  124. }
  125. }
  126. /**
  127. * 关闭ResultSet对象
  128. * @param resultSet
  129. */
  130. public static void close(ResultSet resultSet){
  131. try {
  132. resultSet.close();
  133. } catch (SQLException e) {
  134. e.printStackTrace();
  135. }
  136. }
  137. }
  138. package cn.itcast.dao.Impl;
  139. import java.sql.Connection;
  140. import java.sql.Date;
  141. import java.sql.PreparedStatement;
  142. import java.sql.ResultSet;
  143. import java.sql.SQLException;
  144. import java.util.ArrayList;
  145. import java.util.List;
  146. import cn.itcast.cd.jsp.dao.IStudentDao;
  147. import cn.itcast.cd.jsp.domain.Student;
  148. import cn.itcast.cd.utils.DbUtils;
  149. public class StudentDao implements IStudentDao {
  150. @Override
  151. public void add(Student stu) {
  152. // 连接数据库
  153. Connection connection = DbUtils.getConnection();
  154. PreparedStatement preparedStatement = null;
  155. String sql = "INSERT INTO student VALUES (null,?,?,?,?)";
  156. try {
  157. preparedStatement = connection.prepareStatement(sql);
  158. preparedStatement.setString(1, stu.getName());
  159. preparedStatement.setString(2, stu.getSex());
  160. preparedStatement.setInt(3, stu.getAge());
  161. // 第二参数为java.sql.Date类型,为java.util.Date的子类,需要处理
  162. preparedStatement.setDate(4, new Date(stu.getBirthday().getTime()));
  163. preparedStatement.executeUpdate();
  164. } catch (SQLException e) {
  165. e.printStackTrace();
  166. } finally {
  167. // 关闭资源
  168. DbUtils.close(connection, preparedStatement);
  169. }
  170. }
  171. @Override
  172. public void delete(int id) {
  173. // 连接数据库
  174. Connection connection = DbUtils.getConnection();
  175. PreparedStatement preparedStatement = null;
  176. String sql = "DELETE FROM student WHERE id = " + id;
  177. try {
  178. preparedStatement = connection.prepareStatement(sql);
  179. preparedStatement.executeUpdate();
  180. } catch (SQLException e) {
  181. e.printStackTrace();
  182. } finally {
  183. // 关闭资源
  184. DbUtils.close(connection, preparedStatement);
  185. }
  186. }
  187. @Override
  188. public void update(int id, Student stu) {
  189. // 连接数据库
  190. Connection connection = DbUtils.getConnection();
  191. PreparedStatement preparedStatement = null;
  192. String sql = "UPDATE student SET name=?,sex=?,age=?,birthday=? WHERE ID="
  193. + id;
  194. try {
  195. preparedStatement = connection.prepareStatement(sql);
  196. preparedStatement.setString(1, stu.getName());
  197. preparedStatement.setString(2, stu.getSex());
  198. preparedStatement.setInt(3, stu.getAge());
  199. preparedStatement.setDate(4, new Date(stu.getBirthday().getTime()));
  200. preparedStatement.executeUpdate();
  201. } catch (SQLException e) {
  202. e.printStackTrace();
  203. } finally {
  204. // 关闭资源
  205. DbUtils.close(connection, preparedStatement);
  206. }
  207. }
  208. @Override
  209. public Student get(int id) {
  210. // 连接数据库
  211. Connection connection = DbUtils.getConnection();
  212. ResultSet resultSet = null;
  213. PreparedStatement preparedStatement = null;
  214. String sql = "SELECT * FROM student WHERE ID=" + id;
  215. try {
  216. preparedStatement = connection.prepareStatement(sql);
  217. resultSet = preparedStatement.executeQuery();
  218. if (resultSet.next()) {
  219. Student stu = new Student();
  220. stu.setName(resultSet.getString("name"));
  221. stu.setSex(resultSet.getString("sex"));
  222. stu.setAge(resultSet.getInt("age"));
  223. stu.setBirthday(resultSet.getDate("birthday"));
  224. stu.setId(resultSet.getInt("id"));
  225. return stu;
  226. }
  227. } catch (SQLException e) {
  228. e.printStackTrace();
  229. } finally {
  230. // 关闭资源
  231. DbUtils.close(connection, preparedStatement, resultSet);
  232. }
  233. return null;
  234. }
  235. @Override
  236. public List<Student> getAll() {
  237. List<Student> stuList = new ArrayList<Student>();
  238. // 连接数据库
  239. Connection connection = DbUtils.getConnection();
  240. ResultSet resultSet = null;
  241. PreparedStatement preparedStatement = null;
  242. String sql = "SELECT * FROM student";
  243. try {
  244. preparedStatement = connection.prepareStatement(sql);
  245. resultSet = preparedStatement.executeQuery();
  246. while (resultSet.next()) {
  247. Student stu = new Student();
  248. stu.setName(resultSet.getString("name"));
  249. stu.setSex(resultSet.getString("sex"));
  250. stu.setAge(resultSet.getInt("age"));
  251. stu.setBirthday(resultSet.getDate("birthday"));
  252. stu.setId(resultSet.getInt("id"));
  253. stuList.add(stu);
  254. }
  255. } catch (SQLException e) {
  256. e.printStackTrace();
  257. } finally {
  258. // 关闭资源
  259. DbUtils.close(connection, preparedStatement, resultSet);
  260. }
  261. return stuList;
  262. }
  263. @Override
  264. public List<Student> get(String name) {
  265. List<Student> stuList = new ArrayList<Student>();
  266. // 连接数据库
  267. Connection connection = DbUtils.getConnection();
  268. ResultSet resultSet = null;
  269. PreparedStatement preparedStatement = null;
  270. String sql = "SELECT * FROM student WHERE name='"+name+"'";
  271. try {
  272. preparedStatement = connection.prepareStatement(sql);
  273. resultSet = preparedStatement.executeQuery();
  274. while (resultSet.next()) {
  275. Student stu = new Student();
  276. stu.setName(resultSet.getString("name"));
  277. stu.setSex(resultSet.getString("sex"));
  278. stu.setAge(resultSet.getInt("age"));
  279. stu.setBirthday(resultSet.getDate("birthday"));
  280. stu.setId(resultSet.getInt("id"));
  281. stuList.add(stu);
  282. }
  283. } catch (SQLException e) {
  284. e.printStackTrace();
  285. } finally {
  286. // 关闭资源
  287. DbUtils.close(connection, preparedStatement, resultSet);
  288. }
  289. return stuList;
  290. }
  291. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值