jdbcpreparestatement执⾏多条语句_你知道JDBC嘛?Java数据库连接,提供了⼀种与平台⽆关的⽤于执⾏SQL语句的标准javaAPI,可以⽅便实现多种关系型数据库的统⼀操作。
JDBC驱动分类
· JDBC-ODBC桥驱动
ODBC是由微软提供的编程接⼝,JDBC也是模仿了ODBC的设计
· JDBC-本地驱动
直接使⽤各个数据库⽣产商提供的JDBC驱动程序,因为只能应⽤在特定的数据库上,会丧失程序的可移植性,不过性能很⾼。
· JDBC-⽹络驱动
将JDBC转换为与DBMS⽆关的⽹络协议,之后⼜被某个服务器转换为⼀种DBMS协议,所⽤的具体协议取决于提供者,最为灵活
·
本地协议纯JDBC驱动
将JDBC转换为DBMS所使⽤的⽹络协议。
· 主要操作类及接⼝
python最新版本下载教程常⽤的类与接⼝就是DriverManager、Connection、Statement、Result、PreparedStatement
MySQl数据库
· 常⽤命令
创建数据库:create database 数据库名称 ;
删除数据库:drop database 数据库名称 ;
使⽤数据库:use 数据库名称 ;
创建数据库表:create table 表名( 字段名称1 字段类型[default 默认值] [约束], ...) ;
删除数据库表:drop table 表名 ;
查看表结构: desc 表名称 ;
查看全部数据库:show databases ;
查看⼀个数据库全部表: show tables ;
· SQL语法基础(Structured Query Language,结构查询语句)强⼤的数据库语⾔
DML-数据操作语⾔:检索或修改数据
DDL-数据定义语⾔:定义数据的结构,创建、修改、删除
DCL-数据控制语⾔:定义 数据库⽤户的权限
数据类型
整型数据
时间⽇期类
字符串类型
插⼊数据:insert into 表名称( 字段 ) values(值...);
删除数据:delete from 表名称 [删除条件] ; 若⽆条件则清空表,条件如 "where id =1"
更新数据:update 表名称 set 字段1 =值 1 ... [where 更新条件]
查询数据:select {*|colum alias} from 表名 [where ];
c 正则表达式语法大全
模糊搜索:select * from table where name like '%m%' or password like '%m%' ;搜索姓名或密码含有m 的⽤户加⼊limit 限制语句,limit 0,5 ; 限制从第1-5⾏的记录
JDBC操作步骤
· 连接数据库
配置MySQL数据库的驱动程序
下载 mysql-connector-java-5.1.39.zip,复制到jdk的所在处
public class jdbc {
public static final String DRIVER="sql.Driver";
public static void main(String[] args){
try{
System.out.println(Class.forName(DRIVER)) ;
localdb是什么}catch(ClassNotFoundException e){
e.printStackTrace() ;
}
}
}
若能输出Class名,则已配置好了
为什么调⽤Class.forName(),却没有newInstance();
Class.forName() 加载了指定类后,若类中有静态初始化器,JVM必然会执⾏该类的静态代码段,⽽JDBC的Driver类都是会有static代码块
DriverManagermatlab编程视频教程百度网盘
getConnection(String url, String user ,String password) :通过连接地址链接数据库,同时输⼊⽤户名和密码
url: jdbc:mysql:// ip地址 : 端⼝号/ 数据库名称
jdbc协议:JDBC URL中的协议总是jdbc
⼦协议:驱动程序名或数据库连接机制(这种机制可由⼀个或多个驱动程序⽀持)的名称,如mysql
⼦名称:⼀种标识数据库的⽅法,必须遵循"//主机名 : 端⼝/⼦协议" 的标准URL命名 约定
Connection接⼝
执⾏数据库的更新操作
Statement接⼝,通过Connection接⼝的createStatement()⽅法实例化,来操作数据
public static final String DRIVER="sql.Driver";
public static final String URL="jdbc:mysql://localhost:3306/newsql";
public static final String USERNAME="root";
public static void main(String[] args)throws Exception{
Connection conn=null;
Statement statement=null;
String sql="insert into newtable(name) values('ccw')";
try{
Class.forName(DRIVER); //加载驱动
mysql菜鸟教程字符串型}catch(ClassNotFoundException e){
e.printStackTrace() ;
}
Connection(URL,USERNAME,USERNAME);
ateStatement();
try{
statement.close(); //先开后关闭,可以只关闭connection
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}
ResultSet接⼝
接受所查询的记录,并显⽰内容,开发中要限制查询数量
Statement接⼝的executeQuery() ⽅法,返回⼀个ResultSet对象
ResultSet uteQuery(sql);
()){
怎么判断ascii码的大小
int Int("id"); //int Int(1);
String String("name"); //String String(2);
String String("sex"); //....
System.out.println(id+name+sex);
}
ResultSet的所有数据都可以通过getString()⽅法获得
PreparedStatement接⼝
是Statement的⼦接⼝,属于预处理操作,与直接使⽤Statement不同的是,是先在数据表中准备好了⼀条SQL语句,但是此SQL语句的具体内容暂时不设置,⽽是之后在进⾏设置,即占住此位置等待⽤户设置
String sql="insert into newtable(name,sex) values(?,?)";
pStatement=conn.prepareStatement(sql); //实例化
pStatement.setString(1, name);
pStatement.setString(2, sex);
注意:开发中不建议使⽤Statement来操作数据库,⽽是使⽤PreparedStatement,因为Statement是完整的SQL语句
处理⼤数据对象——必须使⽤PreparedStatement
CLOB:存储海量⽂字
BLOB 存储⼆进制数据
写⼊⼤对象数据——IO流的模式
读取⼤对象数据
处理CLOB
使⽤Clob操作⽐InputStream更加⽅便
String sql="select name,note from bigtable where id =?";
pStatement=conn.prepareStatement(sql);
pStatement.setInt(1, 1);
ResultSet uteQuery();
()){
String String(1);
Clob Clob(2);
String SubString(1, (int)clob.length());
System.out.println(name+" "+note);
}
处理BLOB
创建表:create table userBlob(id int auto_increment primary key,name char(30), photo longblob) ;存储图⽚
String sql="insert into userblob(name, photo) values(?,?)";
pStatement=conn.prepareStatement(sql);
File file=new File("d:"+File.separator+"my.jpg");
InputStream input=new FileInputStream(file);
pStatement.setString(1, name);
pStatement.setBinaryStream(2, input);
使⽤BLOB⽅法更加⽅便
()){
String String(1);
Blob Blob(2);
FileOutputStream output=new FileOutputStream(newFile("d:"+File.separator+"you.jpg"));
output.Bytes(1,(int)blob.length()));
output.close();
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。