最近两天学习了一下数据库的知识,那就简单的谈谈JDBC对数据库的连接吧。
首先, 要清楚JDBC是个什么东西------(java database connectivity standard)它是基于java连接数据库的一个接口。然而它本身并不能够操作数据库,它必须依赖数据库厂商提供的符合JDBC规范的JDBC驱动程序才能操作数据库。
其次:这里我写了四个包分别实现不同的功能,1>connect的包用于实现jdbc连接数据库的操作;2>userInfo的包实现的表中字段属性,以及属性的set/get方法;3>dao的包主要实现应用程序对sql语句的执行也就是对数据库值得操作 (值得注意的是:应用程序只能实现对数据库中值得操作,并不能改变表的结构,所以sql语句只有四种:insert/delete/update/select)4>test包实现测试功能
JDBC操作数据库的步骤:
1.装载数据库的驱动:
两种方法:
1>动态的方法(Class.forName())的方法
Class.forName("com.mysql.jdbc.Driver");
2>静态创建JDBC驱动:
Driver myDriver = com.mysql.jdbc.Driver();
DriverManager.registerDriver(myDriver);
要注意的是:驱动写好后要将一个.jar的驱动包导入到该工程中,否则出现找不到驱动的错误。
2.建立数据库的连接
首先我们可以这样思考,我们在连接服务器的时候需要的是什么东西。是不是需要一个IP地址和Port端口号来实现客户端对服务器的连接...同样的道理,连接数据库也是一样的
需要的信息:
1>数据库的服务器名:默认写localhost
2>端口号:默认3306
3>数据库的名字:
4>用户名,密码
String user = "root";
String password = "*****";
//MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值
String url = "jdbc:mysql://localhost:3306/netjava?"+"characterEncoding=UTF8";
3.连接数据库,并实现应用程序对数据库值得操作
代码如下:
//连接数据库的方法
public static Connection connectSql(){
//自己的账户密码
String user = "root";
String password = "035012";
//JDBC连接数据库需要端口号IP地址以及数据库的名字
String url = "jdbc:mysql://localhost:3306/netjava?";
try {
//首先需要动态驱动
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Mysql驱动安装成功了!");
//现在开始连接数据库
con = DriverManager.getConnection(url, user, password);
System.out.println("Mysql连接成功了!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
System.out.println("Mysql连接失败了!");
e.printStackTrace();
}
return con;
}
第二步,实现userInfo中的信息
就是,你自己所建的表中的字段,字段的set/get方法,代码就不写了。
第三步,应用程序对sql语句的执行过程:
//应用程序的数据导入到数据库的方法
public void dao(UserInfo use){
//导入到数据库的SQL语句
// sql = "insert into student(sno,sname,step) values("+use.getSno()+",'"+use.getSname()+"','"+use.getStep()+"')";
// sql = "update student set sname = '"+use.getSname()+"',step = '"+use.getStep()+"' where sno = 2";
sql = "delete from student where sno = "+use.getSno()+" ";
//将SQL语句插入到数据库的操作
try {
Statement stat = ConnectSql.connectSql().createStatement();
// stat.execute(sql);//插入
// stat.execute(sql);//更新
stat.execute(sql);//删去
System.out.println("学生的基本信息被插入成功了!");
//返回结果的集合
sql = "select *from student";
rset = stat.executeQuery(sql);
while(rset.next()){
//输出查询的结果
System.out.println(rset.getInt("sno")+"\t"+rset.getString("sname")+"\t"+rset.getString("step"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
我自己当时犯了一个错误就是将use.getSno()的方法直接放到values()中了然后出现了该方法不存在的错误...因此,写该方法values("+use.getSno()+");
第四步:就是测试类了,这里就不多做叙述了。