jdbc

jdbc逻辑

什么是jdbc

全称Java Database Connectivity
jdbc通过载入不同数据库的驱动程序与不同数据库连接
优点:
同一套操作连接不同的数据库

导入驱动

方法1.利用pom


    com.microsoft.sqlserver
    sqljdbc4
    4.0

方法2.将jar包导入一个文件夹后,右键Buid Path->add to path添加到引用的库里

加载驱动

mysql: class.forName("com.mysql.jdbc.Driver");
SqlServer: Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

连接 DriverManager.getConnection

Connection con = DriverManager.getConnection();

通过方法DriverManager.getConnection
参数:
    getConnection(String url)
    getConnection(String url,Properties info)
    getConnection(String url,String user,String password)
返回值:
    static Connection
    
tip
url常用写法:
    Oracle:jdbc:oracle:thin:@localhost:1521:shen
    SqlServer:jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=shen
    MySql:jdbc:mysql://localhost:3306/shen
Properties写法:
    Properties p = new Properties();
    p.setProperty("user","root");
    p.serProperty("password","pass");
    DriverManager.getConnection(url,p);

执行sql语句 con.

Statement

Statement sm = con.createStatement();

sm有两种方式:
    executeQuery(sql);返回ResultSet
    executeUpdate(sql);返回一个整数,代表影响的行数

PreparedStatement

con.prepareStatement(sql);

类似于Statement,可以使用占位符填数据
还用占位符后可以使用setXxx(pos,data)填充每一位。pos是位置,Xxx是类型,data是值
使用同Statement
String sql="select ? from stu";
PreparedStatement sm = con.prepareStatement(sql);
sm.setString(1,"age");
sm.executeQuery();

CallableStatement

con.CallablCall(sql);

主要用来调用存储过程(用的不多,用到再说吧)
String sql = "call p1(?,?,?)";
CallableStatement cs = con.prepareCall(sql);
cs.setInt(1,50);
cs.setInt(2,60);

结果

ResultSet rs 第一次执行next()后,指向第一行

while(rs.next()){
    sout(rs.getInt(1)+rs.getString(2)+rs.getString("name"));
}

关闭连接

rs.close();   //ResultSet
sm.close();    //Connection
con.close();    //Statement

事务

默认自动提交
可以使用con.setAutoCommit(false);关闭自动提交
当执行con.commit();时才提交

连接池

(不常用,暂没有学习)

源码(import java.sql.*)

// 加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// 连接
Connection con = DriverManager.getConnection("jdbc:sqlserver://10.32.12.235:1433;DatabaseName=xs","SA","Dahuacloud.1");
// 执行sql
Statement sm = con.createStatement();
// selet  到ResultSet集合中,利用getXxx获取内容,通过参数(下标/列名)
String sql = "select * from guest.mytab";
ResultSet rs = sm.executeQuery(sql);
while (rs.next()){
    System.out.println(rs.getInt(1)+"|"+rs.getString("name")+"|"+rs.getTime(3)+"|"+rs.getString("char"));
}
// insert  可以简单理解返回行数就用executeUpdate,只有select用executeQuery
String insert_sql = "insert into guest.mytab values(5,'zhong','2021-01-12 15:49:03','c')";
System.out.println("影响:"+sm.executeUpdate(insert_sql)+"行");

参考连接

你可能感兴趣的:(#,java,数据库,jdbc,java,mysql)