1.   //连接数据库
  2. public Connection getConnection(){
  3. //url为绝对路径
  4. String url="jdbc:sqlserver://127.0.0.1:1433;databaseName=student";
  5. //user为用户名
  6. String user="sa";
  7. //password为密码
  8. String password="*****";
  9. try {
  10. //加载数据库驱动
  11. Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  12. System.out.println("数据库加载驱动成功");
  13. //使用DriverManager获取数据库连接
  14. Connection connection=DriverManager.getConnection(url, user, password);
  15. //数据库连接成功输出提示,返回connection接口
  16. if(connection!=null) {
  17. System.out.println("数据库连接成功");
  18. return connection;
  19. }
  20. }catch (Exception e) {//连接失败,输出失败原因
  21. System.out.println("连接失败:"+e.getMessage());
  22. }
  23. return null;
  24. }
  25. //数据库插入
  26. public void insertRecord(Connection connection) throws SQLException {
  27. //要执行的数据库插入语句,里面的字符串可用?代替,适用于图形交互界面
  28. String sql="INSERT Course VALUES(?,?,?)";
  29. /**
  30. * Connection中的sql语句可以预编译保存在PreparedStatement对象中(如preparedStatement)
  31. * 当需要执行该语句时,直接调用ps,不需要重复地编译select语句,提高了效率。
  32. */
  33. PreparedStatement preparedStatement=connection.prepareStatement(sql);
  34. //为sql语句中的问号设置代替值
  35. preparedStatement.setString(1, "10021");
  36. preparedStatement.setString(2, "插入课程");
  37. preparedStatement.setString(3, null);
  38. /**
  39. * 方法executeUpdate用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句
  40. * 例如 CREATE TABLE 和 DROP TABLE。
  41. * INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。
  42. * executeUpdate 的返回值是一个整数(int),指示受影响的行数(即更新计数)。
  43. * 对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
  44. */
  45. preparedStatement.executeUpdate();
  46. System.out.println("插入成功");
  47. //先打开的后关闭
  48. preparedStatement.close();
  49. connection.close();
  50. }
  51. //数据库删除
  52. public void deleteRecord(Connection connection) throws SQLException {
  53. //要执行的数据库删除语句
  54. String sql="DELETE FROM Course WHERE cno='10021'";
  55. PreparedStatement preparedStatement=connection.prepareStatement(sql);
  56. preparedStatement.executeUpdate();
  57. System.out.println("删除成功");
  58. preparedStatement.close();
  59. connection.close();
  60. }
  61. //数据库修改
  62. public void updateTable(Connection connection) throws SQLException {
  63. //要执行的数据库修改语句
  64. String sql="UPDATE Course SET cname='修改课程' WHERE cno='10020'";
  65. PreparedStatement preparedStatement=connection.prepareStatement(sql);
  66. preparedStatement.executeUpdate();
  67. System.out.println("修改成功");
  68. preparedStatement.close();
  69. connection.close();
  70. }
  71. //数据库查询
  72. public void queryData(Connection connection) throws SQLException {
  73. //要执行的数据库查询语句
  74. String sql="SELECT * FROM Course";
  75. PreparedStatement preparedStatement=connection.prepareStatement(sql);
  76. /**
  77. * 方法executeQuery 用于产生单个结果集(ResultSet)的语句,例如 SELECT 语句。
  78. * 这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。
  79. * 但也只能执行查询语句,执行后返回代表查询结果的ResultSet对象。
  80. */
  81. ResultSet resultSet=preparedStatement.executeQuery();
  82. /**
  83. * resultSet用来承接PreparedStatement对象查询到的结果,可以通过该对象中的方法来访问数据库。
  84. * 如代码中的循环所示,一开始rs光标停在第一行的前面(注意,并非第一行)
  85. * 当第一次执行rs.next()函数时,光标才会到第一行,用一个while循环就可以遍历整个表的行。
  86. * 而rs.getString(index)是用来返回第index列的值,是横向的。
  87. * 注意:第一列的index就是1,而不是0,和数组下标有所区别。
  88. */
  89. while (resultSet.next()) {
  90. //输出进行排版
  91. String cno=String.format("%-10s", resultSet.getString(1));
  92. String cname=String.format("%-15s\t", resultSet.getString(2));
  93. String cbefore=String.format("%-10s", resultSet.getString(3));
  94. System.out.println("课程号:"+cno+"课程名:"+cname+"先行课:"+cbefore);
  95. }
  96. //先打开的后关闭
  97. resultSet.close();
  98. preparedStatement.close();
  99. connection.close();
  100. }

注意:

1.方法executeQuery 用于产生单个结果集(ResultSet)的语句,例如 SELECT 语句。 被使用最多的执行 SQL 语句的方法。这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。但也只能执行查询语句,执行后返回代表查询结果的ResultSet对象。

2.方法executeUpdate用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数(int),指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。

3.方法execute可用于执行任何SQL语句,返回一个boolean值,表明执行该SQL语句是否返回了ResultSet。如果执行后第一个结果是ResultSet,则返回true,否则返回false。但它执行SQL语句时比较麻烦,通常我们没有必要使用execute方法来执行SQL语句,而是使用executeQuery或executeUpdate更适合,但如果在不清楚SQL语句的类型时则只能使用execute方法来执行该SQL语句了。

4.关于Iterator主要有三个方法:hasNext()、next()、remove()

hasNext:没有指针下移操作,只是判断是否存在下一个元素

next:指针下移,返回该指针所指向的元素

remove:删除当前指针所指向的元素,一般和next方法一起用,这时候的作用就是删除next方法返回的元素。

版权声明:本文为liumengsong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/liumengsong/p/10133261.html