java jdbc连接和使用详细介绍
javajdbc连接和使用
jdbc
导入驱动
//jar是已经打包好的class文件集,可以引用到其他工程中
//BuildPath中addexternaljars导入
连接JDBC
1.加载驱动
Class.from("com.mysql.jdbc.Driver");
创建连接
//导包使用java.sql.*; Stringjdbc="jdbc:mysql://localhost:3306/student?user=root&password=&characterEncoding=utf-8";//student是表名 Connectionconn=DriverManager.getConnection(jdbc);
2.注意数据库打开之后一定要记得关。
conn.close();
1.执行SQL语句(创建表,插入,删除,更新)
使用Statemant
Statemantst=conn.createStatemant(); introw=st.executeUpdate(sql语句);//不能做查询操作。
使用PrepareStatement
可以使用?占位符来代替你需要传递的参数
Stringsql="insertinto"+TABLENAME +"(name,subject,score)values(?,?,?)"; PrepareStatementpt=conn.prepareStatement(sql); //给每一位占位符设置值,下标从1开始 pt.setString(1,score.getName()); pt.setString(2.score.getSubject()); pt.setDouble(3,score.getScore()); //使用无参的方法 pt.executeUpdate();
1.查询操作
staticList<Score>queryScore(Connectionpconn,ScorepScore)
throwsSQLException{
ArrayList<Score>mlist=newArrayList<>();
Stringsql="select*from"+TABLENAME+"wherename=?";
PreparedStatementps=pconn.prepareStatement(sql);
ps.setString(1,pScore.getName());
ResultSetrs=ps.executeQuery();
while(rs.next()){
//这里可以通过rs获取所有结果
Stringsubject=rs.getString("subject");
intid=rs.getInt("id");
doublescore=rs.getDouble("score");
mlist.add(newScore(id,pScore.getName(),subject,score));
}
returnmlist;
}
下面是一个小程序
//建立数据库连接类
publicclassDAO{
//放问数据库的链接地址
staticStringjdbc="jdbc:mysql://localhost:3306/student?user=root&password=&characterEncoding=utf-8";
//打开链接
publicstaticConnectionconnection(){
//使用JDBC的步骤
//1.加载JDBC驱动
try{
//类的全名包名+类名
Class.forName("com.mysql.jdbc.Driver");
//2.连接数据库
Connectionconn=DriverManager.getConnection(jdbc);
returnconn;
}catch(Exceptione){
System.out.println("驱动加载失败");
returnnull;
}
}
}
//分数类
publicclassScore{
Stringname;
Stringid;
Stringsubject;
doublescore;
publicScore(Stringname,Stringsubject,doublescore){
super();
this.name=name;
this.subject=subject;
this.score=score;
}
@Override
publicStringtoString(){
return"Score[name="+name+",id="+id+",subject="+subject
+",score="+score+"]";
}
publicScore(Stringname,Stringid,Stringsubject,doublescore){
super();
this.name=name;
this.id=id;
this.subject=subject;
this.score=score;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetId(){
returnid;
}
publicvoidsetId(Stringid){
this.id=id;
}
publicStringgetSubject(){
returnsubject;
}
publicvoidsetSubject(Stringsubject){
this.subject=subject;
}
publicdoublegetScore(){
returnscore;
}
publicvoidsetScore(doublescore){
this.score=score;
}
}
//实现类
publicclassTest{
publicstaticStringTABLENAME="score";
publicstaticvoidmain(String[]args){
try{
Connectionconn=DAO.connection();
if(conn!=null){
System.out.println("链接上了");
//createTable(conn);
//插入一条记录
//Scorescore=newScore("李四","Android",98);
//System.out.println(addScore2(conn,score));
//deleteScore(conn,score);
//updateScore(conn,score);
List<Score>list=queryScoreByName(conn,"王五");//queryAllScore(conn);
for(Scorescore:list){
System.out.println(score);
}
conn.close();
}else{
System.out.println("链接失败");
}
}catch(SQLExceptione){
e.printStackTrace();
}
}
//创建一张表
publicstaticbooleancreateTable(Connectionconn){
//开始执行sql语句
Stringsql="createtable"
+TABLENAME
+"(idintegerprimarykeyauto_increment,namevarchar(3)notnull,subjectvarchar(20)notnull,scoredouble)";
//要执行一条语句,需要一个执行的类Statement
try{
Statementst=conn.createStatement();
intresult=st.executeUpdate(sql);
System.out.println(result);
if(result!=-1)
returntrue;
}catch(SQLExceptione){
e.printStackTrace();
}
returnfalse;
}
//添加一条记录
publicstaticbooleanaddScore(Connectionconn,Scorescore)
throwsSQLException{
Stringsql="insertinto"+TABLENAME
+"(name,subject,score)values('"+score.getName()+"','"
+score.getSubject()+"',"+score.getScore()+")";
System.out.println(sql);
Statementst=conn.createStatement();
introw=st.executeUpdate(sql);
if(row>0)
returntrue;
returnfalse;
}
//添加一条记录2
publicstaticbooleanaddScore2(Connectionconn,Scorescore)
throwsSQLException{
//占位符?来代替需要设置的参数
Stringsql="insertinto"+TABLENAME
+"(name,subject,score)values(?,?,?)";
PreparedStatementps=conn.prepareStatement(sql);
//必须给定?所代表的值
ps.setString(1,score.getName());
ps.setString(2,score.getSubject());
ps.setDouble(3,score.getScore());
//调用无参的方法
introw=ps.executeUpdate();
if(row>0)
returntrue;
returnfalse;
}
publicstaticbooleandeleteScore(Connectionconn,Scorescore)
throwsSQLException{
Stringsql="deletefrom"+TABLENAME+"wherename=?andsubject=?";
//创建PrepareStatement
PreparedStatementps=conn.prepareStatement(sql);
ps.setString(1,score.getName());
ps.setString(2,score.getSubject());
//ps.setDouble(3,score.getScore());
//执行
introw=ps.executeUpdate();
System.out.println(row);
if(row>0)
returntrue;
returnfalse;
}
publicstaticbooleanupdateScore(Connectionconn,Scorescore)
throwsSQLException{
//修改score人他的科目的成绩
Stringsql="update"+TABLENAME
+"setscore=?wherename=?andsubject=?";
PreparedStatementps=conn.prepareStatement(sql);
ps.setDouble(1,score.getScore());
ps.setString(2,score.getName());
ps.setString(3,score.getSubject());
introw=ps.executeUpdate();
System.out.println(row);
if(row>0)
returntrue;
returnfalse;
}
publicstaticList<Score>queryAllScore(Connectionconn)
throwsSQLException{
Stringsql="select*from"+TABLENAME;
//开始查询
Statementst=conn.createStatement();
ResultSetrs=st.executeQuery(sql);
List<Score>list=newArrayList<Score>();
while(rs.next()){
//这里可以通过rs获取所有结果
Stringid=rs.getString("id");
Stringname=rs.getString("name");
Stringsubject=rs.getString("subject");
doublescore=rs.getDouble("score");
list.add(newScore(name,id,subject,score));
}
//结束
returnlist;
}
publicstaticList<Score>queryScoreByName(Connectionconn,Stringname)
throwsSQLException{
Stringsql="select*from"+TABLENAME+"wherename=?";
PreparedStatementpt=conn.prepareStatement(sql);
pt.setString(1,name);
ResultSetrs=pt.executeQuery();
List<Score>list=newArrayList<>();
while(rs.next()){
Stringsubject=rs.getString("subject");
Stringid=rs.getString("id");
doublescore=rs.getDouble("score");
list.add(newScore(name,id,subject,score));
}
returnlist;
}