全称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");
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);
Statement sm = con.createStatement();
sm有两种方式:
executeQuery(sql);返回ResultSet
executeUpdate(sql);返回一个整数,代表影响的行数
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();
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();时才提交
(不常用,暂没有学习)
// 加载驱动
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)+"行");
参考连接