【前面的话】

时间总是好快,每次都感觉还没有怎么好好去过,对于好多事情,希望自己可以做的更多一点。心情能够好一点,平淡一点就行了。

学习过程中的知识点总结,基础知识,选择阅读

JDBC定义】

定义:Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。它JDBC是面向关系型数据库的。

OBDC定义:

ODBC(Open Database Connectivity,开放数据库互连)提供了一种标准的API(应用程序编程接口)方法来访问数据库管理系统(DBMS)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。ODBC的设计者们努力使它具有最大的独立性和开放性:与具体的编程语言无关,与具体的数据库系统无关,与具体的操作系统无关。

JDBC的类型

  1. 通过使用jdbc/obdc桥,然后让odbc驱动程序和数据库进行通信。也就是jdbc——jdbc/obdc桥——odbc。
  2. 驱动程序是由部分java程序和部分本地代码组成,用于与数据库的客户端API进行通信。
  3. 驱动程序是纯java客户端类库,它使用一种与具体数据库无关的协议将数据库请求发送给服务器构件,然后该构件再将数据库请求翻译成特定数据库协议。
  4. 驱动程序是纯java类库,他将jdbc请求直接翻译成特定数据库协议。

【代码】

下面的代码对于Mysql数据库进行操作。

创建数据库代码:

 CREATE DATABASE jdbctest;
use jdbctest;
create table user(
userid int(8) unsigned not null auto_increment,
username varchar(20) not null default'',
password varchar(40) not null default'',
email varchar(40) not null default'',
primary key(userid)
);

如下图:

 点击可以下载:  代码要加入mysql-connector-java-5.1.25-bin.jar包。

1. JdbcTest.java

 package database;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger; public class JdbcTest {
String drivename="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost/jdbctest";
String user="root";
String password="891004";
String insql;
String upsql;
String delsql;
String sql="select * from user";
String name;
Connection conn;
ResultSet rs=null; public Connection ConnectMysql(){
try{
Class.forName(drivename);
conn = (Connection) DriverManager.getConnection(url, user, password);
if (!conn.isClosed()) {
System.out.println("Succeeded connecting to the Database!");
} else {
System.out.println("Falled connecting to the Database!");
}
}catch(Exception ex){
ex.printStackTrace();
}
return conn;
}
public void CutConnection(Connection conn) throws SQLException{
try{
if(rs!=null);
if(conn!=null);
}catch(Exception e){
e.printStackTrace();
}finally{
rs.close();
conn.close();
}
}
//插入、删除、更新的方法是一样的,不一样的是数据库参数
public boolean InsertSql(User user){
try{
insql="insert into user(userid,username,password,email) values(?,?,?,?)";
//上面的方法比下面的方法有优势
//insql="insert into user(userid,username,password,email) values(user.getId,user.getName,user.getPassword,user.getEmail)";
PreparedStatement ps=conn.prepareStatement(insql);
//.preparedStatement(insql);
//PreparedStatement ps=(PreparedStatement) conn.prepareStatement(insql);
ps.setInt(1, user.getId());
ps.setString(2, user.getName());
ps.setString(3, user.getPassword());
ps.setString(4, user.getEmail());
int result=ps.executeUpdate();
//ps.executeUpdate();无法判断是否已经插入
if(result>0)
return true;
}catch(Exception e){
e.printStackTrace();
}
return false;
}
//与其他操作相比较,查询语句在查询后需要一个查询结果集(ResultSet)来保存查询结果
public void SelectSql(String sql){
try{
Statement statement=conn.createStatement();
rs=statement.executeQuery(sql);
while(rs.next()){
name=rs.getString("username");
System.out.println("UserID:"+rs.getString("userid")+" Name:"+name+" email:"+rs.getString("email"));
}
}catch(Exception e){
e.printStackTrace();
}
}
public boolean UpdateSql(String upsql){
try {
PreparedStatement ps = conn.prepareStatement(upsql);
int result=ps.executeUpdate();//返回行数或者0
if(result>0)
return true;
} catch (SQLException ex) {
Logger.getLogger(JdbcTest.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}
public boolean DeletSql(String delsql){
try {
PreparedStatement ps = conn.prepareStatement(upsql);
int result=ps.executeUpdate(delsql);
if(result>0)
return true;
} catch (SQLException ex) {
Logger.getLogger(JdbcTest.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}
}

2. User.java

 package database;

 class User{//内部类,其字段对应用来存放、提取数据库中的数据
int userid;
String username="";
String password="";
String email="";
//通过set方法,往类的实例里“存放”数据
//通过get方法,从类的实例里“获得”数据,然后再通过插入数据库
public void setId(int userid){
this.userid=userid;
}
public void setName(String username){
this.username=username;
}
public void setPassword(String password){
this.password=password;
}
public void setEmail(String email){
this.email=email;
}
public Integer getId(){
return userid;
}
public String getName(){
return username;
}
public String getPassword(){
return password;
}
public String getEmail(){
return email;
}
}

3. MainTest.java

 package database;

 import java.sql.SQLException;
import database.User; public class MainTest {
public static void main(String args[]) throws SQLException{
JdbcTest cd=new JdbcTest();
User user=new User();
cd.ConnectMysql();
user.setId(12);//每次测试运行都要改变该数字,因为主键要保持唯一。
user.setName("zhangsan");
user.setPassword("we23");
user.setEmail("udjdj@125.com");
cd.upsql="update user set username='we' where userid=5";
cd.delsql="delete from user where userid=1";
cd.InsertSql(user);
cd.DeletSql(cd.delsql);
cd.UpdateSql(cd.upsql);
cd.SelectSql(cd.sql);
cd.CutConnection(cd.conn);
}
}

4. 运行结果:(运行结果大家都不一样,主要看你数据库中有什么样的数据,另外切记每次输入数据库的ID要不一样,因为ID是主键。

 Succeeded connecting to the Database!
UserID:2 Name:zhangsan email:udjdj@125.com
UserID:3 Name:zhangsan email:udjdj@125.com
UserID:4 Name:zhangsan email:udjdj@125.com
UserID:5 Name:we email:udjdj@125.com
UserID:12 Name:zhangsan email:udjdj@125.com
UserID:14 Name:zhangsan email:udjdj@125.com

5. 下图显示数据库存储状况:

【参考资料】

  1. http://blog.sina.com.cn/s/blog_4bea2fb10100f147.html

【后面的话】

每天学习一点点,希望这样可以让我进步一点点,加油啦。

分享:(来自知乎日报)

凡是在不恰当的场合或者不恰当的对象前盲目展现自己,不懂克制自己的优越感与资源优势的,都很难称之为有品位。

分寸,就是对问题恰如其分的回应,多一分,腻;少一分,冷。

克制,是在明白生命无常之后对自我的控制,与对生命不同形态的宽容。

雄鹰自有雄鹰的疆场,何必飞入麻雀的山林故展雄姿。

优秀的人已经得到别人内心的认同,无需再求他人无言的自卑。

——TT

最新文章

  1. orcal 操作
  2. sql,联合主键,按id分组求版本号最大值的集合
  3. html中不要忽略一些细节
  4. 《C++ primer》--第10章
  5. 拍照返回的bitmap太小
  6. Ehcache简单说明及使用
  7. C# Dictionary 字典
  8. innodb更改行格式,系统盘占用急剧升高
  9. sybase 修改用户密码
  10. CSS position 属性
  11. cookie设置今日不提醒功能
  12. JPA中EntityListeners注解的使用
  13. Array,prototype.concat.apply与[].conat.apply.
  14. install kali on my x200
  15. Oracle 理论到实践之碎碎念
  16. H5调用本地摄像头[转]
  17. tomcat启动后8005端口未被占用
  18. 个人作业Week3
  19. Java与编码问题串讲之二–如何理解java采用Unicode编码
  20. 小物件之checkbox复选框

热门文章

  1. 总结:Bias(偏差),Error(误差),Variance(方差)及CV(交叉验证)
  2. caffe中使用crop_size剪裁训练图片
  3. [10.18模拟赛] 序列 (DP)
  4. Codeforces Round #532 (Div. 2):F. Ivan and Burgers(贪心+异或基)
  5. jq 正则
  6. [freemarker篇]01.入门Freemarker示例
  7. Python遍历文件夹和读写文件的方法
  8. 【BZOJ】2502 清理雪道
  9. 【BZOJ】1699 [Usaco2007 Jan]Balanced Lineup排队
  10. 撩下Cookie和Session