发表于: 2018-09-09 23:32:04
1 459
今天完成的事情:今天喝了10包咖啡,算是为了正式报名来个警醒.
---------------------------------------------------------------------------------------------------------------------------✄
小试牛刀
使用Statement接口中的executeUpdate()方法向MySQL数据库中插入一条数据.
1.刚开始敲入代码时有2处红色波浪线,5处标红. 在朱师兄的帮助下,通过使用Alt+Enter,软件自己就把问题解决了. 问题在于需要插入调用上述图片中大红色框中的文件.
2.问题1解决后程序实现了正常运行, 可是添加入数据库表格的中文全都为"??????"说明无法显示. 在经过折腾以后发现造成问题的原因有3:
a.需要对IntelliJ IDEA 如下图所示的编码格式进行统一设定,需要设定成包含中文字符的编码格式.
b.源数据库的编码也要修改成包含中文字符的编码,如下图所示.
c.如第一张图所示,在链接数据时,需要在url里面加上characterEncoding=utf8.
修正上述错误后,最终完成了往数据库添加信息.运行结果如下面2张图所示.
程序代码超详细解读:
//导入包,具体地说,应是导入要用到的包中的类接口
//有部分方法需要用到的功能,都要在最前方导入,这部分可以有软件来提示完成,但是该懂得还是得懂
import java.sql.Connection;//导入Connection类接口
import java.sql.DriverManager;//导入DriverManager类接口
import java.sql.SQLException;//导入SQLException类接口
import java.sql.Statement;//导入Statement类接口
public class jdbc {/*如果一个类声明的时候使用了public class进行了声明,
则类名称必须与文件名称完全一致. 所以文件名为jdbc.java*/
//public公共的,class声明一个类,类的名称叫做jdbc
public static void main(String[] args) throws SQLException, ClassNotFoundException {/*被public修饰的类可以被其他包访问.如果现在的库名是com,那么就可容易通过下面的声明访问
main:
import com.main;*/
/*static 静态的,也就是不用 new 这个对象,这个方法也存在,也就是 Obj.xxx 就可以调用了(注 意是大写的 O)*/
/*void 空类型,也就是不返回任何值*/
/*main 是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方 法*/
/*String[]参数类型为字符串数组*/
/*args 参数 */
/*throw则是指抛出的一个具体的异常类型,通常在一个方法(类)的声明处通过throws声明方法(类) 可能抛出的异常信息,
而在方法(类)内部通过throw声明一个具体的异常信息.
如果在方法中会有异常被抛出而你又不希望在这个方法体内对此异常进行处理,
可以使用throws在声明方法的时候同时声明他可能会跑出的异常.比如:
public void go() throws SQLException{
Connection conn = ds.getConnection();
...}*/
/*没有导入mysql数据库连接相关的包mysql-connector-java-5.1.23.jar */
Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动
/*Class.forName(String):加载类,并且执行类初始化;可以通过Class.forName(String,
boolean,ClassLoader)第二个参数来仅仅加载类不执行初始化*/
/*最开始使用的时候,不明白为什么首先要加载一个驱动类,之后就可以取得了Connection了,
很好奇DriverManager是怎么获得那个驱动类的信息,后来看了下com.mysql.jdbc.Driver这个类的 源代码,豁然开朗了.
原来在com.mysql.jdbc.Driver类中有这么一段静态初始化代码:
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
}
catch (SQLException E) {
throw new RuntimeException(“Can’t register driver!”);
}
}
也就是,在Class.forName加载完驱动类,开始执行静态初始化代码时,会自动新建一个Driver的对 象,并调用DriverManager.registerDriver把自己注册到DriverManager中去*/String url/*设置链接类型字符串*/="jdbc:mysql://localhost:3306/register?"+
"characterEncoding=utf8";
//声明数据库register的URL
/*MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值
避免中文乱码要指定characterEncoding的编码格式,
执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定,
语句之前就要先创建register数据库*/
String user="root";//验证核对数据库用户名
String password ="lmlglllyjg";//验证核对数据库同行密码
//建立数据库连接,获得连接对象conn
Connection conn= DriverManager.getConnection(url,user,password);
//生成一条SQL语句
String sql="insert into student (name,qq,school,wish)values('狗子','111111111'," +
"'内蒙古师范大学','不见武林豪杰墓,无酒无花锄做田')";
Statement stmt=conn.createStatement();//创建一个Statement对象
stmt.executeUpdate(sql);//执行SQL语句
stmt.close();//关闭数据库连接对象
}
}
---------------------------------------------------------------------------------------------------------------------------✄
mysql的jdbc driver的maven依赖
为了完成上述任务,成功运行代码. 还需要加入实现jdbc driver功能的mysql的jar包. 大多数版本的jar包都可以满足功能要求.所以只需要去下面的博客链接复制一段代码即可.
https://blog.csdn.net/guiying123456/article/details/49964285
新建一个maven文件pom.xml.
将复制好的代码插入到pom.xml文件代码中的如下位置即可.
代码刚敲完,不需要运行,软件就会自觉下载jar包,只需要安安静静做个美男子,等待下完即可. 下载存放位置也可以通过搜索,在C盘里直接找到,如下图所示.
---------------------------------------------------------------------------------------------------------------------------✄
分享一个输入法设置技巧: 适用于搜狗输入法
作为一个天天搞"对象"的程序狗,天天挣扎在心"类"身体不"类"的边缘;又或者是作为一个即将要天天搞"对象"的菜鸟程序狗. 常常要写代码的同时还要写注释,有的还要一边扣扣聊天. 而此时最让人香菇的bug恐怕莫过于切换中文打字法了,有时一疏忽就会在代码里面混入中文标点符号滥竽充数;然后查了半天找不出来,可把人吓坏了;最后找出来时就excuse me!跌亏不是大问题啊.
这点其实是可以破解的,来!请你像我这样做:
鼠标右键搜狗输入法 → 设置 → 按照下图操作 → 应用 → 确定
只要保证中英文输入法的标点符号都能统一为英文标点符号,此问题就解决了. 什么?会有人把汉字也混到代码里去,那么他的眼眸一定很清澈明亮.
---------------------------------------------------------------------------------------------------------------------------✄
再试牛刀
使用PrepareStatement接口中的executeUpdate()方法向MySQL数据库中插入一条数据.
软件自动标注不能被复制出来.
运行结果如下面2张图所示.
程序代码超详细解读:
import java.sql.*;/*引入java标准库中的包,java.sql.*中主要是一些数据库相关的类,如Connection,Driver,Statement,ResultSet等*/
public class jdbc {/*如果一个类声明的时候使用了public class进行了声明,
则类名称必须与文件名称完全一致. 所以文件名为jdbc.java*/
//public公共的,class声明一个类,类的名称叫做jdbc
public static void main(String[] args) throws SQLException, ClassNotFoundException {
/*被public修饰的类可以被其他包访问.如果现在的库名是com,那么就可容易通过下面的声明访问
main:
import com.main;*/
/*static 静态的,也就是不用 new 这个对象,这个方法也存在,也就是 Obj.xxx 就可以调用了(注
意是大写的 O)*/
/*void 空类型,也就是不返回任何值*/
/*main 是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方
法*/
/*String[]参数类型为字符串数组*/
/*args 参数 */
/*throw则是指抛出的一个具体的异常类型,通常在一个方法(类)的声明处通过throws声明方法(类)
可能抛出的异常信息,
而在方法(类)内部通过throw声明一个具体的异常信息.
如果在方法中会有异常被抛出而你又不希望在这个方法体内对此异常进行处理,
可以使用throws在声明方法的时候同时声明他可能会跑出的异常.比如:
public void go() throws SQLException{
Connection conn = ds.getConnection();
...}*/
/*没有导入mysql数据库连接相关的包mysql-connector-java-5.1.23.jar */
Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动
/*Class.forName(String):加载类,并且执行类初始化;可以通过Class.forName(String,
boolean,ClassLoader)第二个参数来仅仅加载类不执行初始化*/
/*最开始使用的时候,不明白为什么首先要加载一个驱动类,之后就可以取得了Connection了,
很好奇DriverManager是怎么获得那个驱动类的信息,后来看了下com.mysql.jdbc.Driver这个类的
源代码,豁然开朗了.
原来在com.mysql.jdbc.Driver类中有这么一段静态初始化代码:
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
}
catch (SQLException E) {
throw new RuntimeException(“Can’t register driver!”);
}
}
也就是,在Class.forName加载完驱动类,开始执行静态初始化代码时,会自动新建一个Driver的对
象,并调用DriverManager.registerDriver把自己注册到DriverManager中去*/
String url/*设置链接类型字符串*/="jdbc:mysql://localhost:3306/register?"+
"characterEncoding=utf8";
//声明数据库register的URL
/*MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值
避免中文乱码要指定characterEncoding的编码格式,
执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定,
语句之前就要先创建register数据库*/
String user="root";//验证核对数据库用户名
String password ="lmlglllyjg";//验证核对数据库同行密码
//建立数据库连接,获得连接对象conn
Connection conn= DriverManager.getConnection(url,user,password);
//生成一条SQL语句
String sql="insert into student (name,qq,school,wish)values(?,?,?,?)";
PreparedStatement ps=conn.prepareStatement(sql);//创建一个Statement对象
ps.setString(1,"富贵");//为SQL语句中第一个问号赋值
ps.setString(2,"222222222");//为SQL语句中第一个问号赋值
ps.setString(3,"上海大学");//为SQL语句中第一个问号赋值
ps.setString(4,"商女不知亡国恨,衣冠不整下堂来");//为SQL语句中第一个问号赋值
ps.executeUpdate();//执行SQL语句
conn.close();//关闭数据库连接对象
}
}
---------------------------------------------------------------------------------------------------------------------------✄
明天计划的事情:增删查改代码没有写完,明天继续.
遇到的问题:1. 软件使用时有问题,谢谢师兄很有耐心地指导我解决了.
2. IntelliJ IDEA的语句提示,还是没有找到从哪里可以设置忽略大小写.
收获:都写在前面了.
评论