SQL&JDBC练习

前言:做了做老师布置的JDBC的作业,真的是惨不忍睹,现在就是不太敢上交,因为老师就在面前,所以趁现在把博客写写吧,感觉自己折腾这些东西真的有些时候了,跟大佬没法比,一个小时和两天,啧啧啧,唉,不能太丧啊。

先附上当时看到的一片博客吧:https://www.cnblogs.com/xdp-gacl/p/3946207.html      条例清楚,给当时迷茫的我指点了迷津,让我回忆起了过去的辉煌。

JABC连接的基本步骤:

1、安装驱动

驱动的话直接上网找JDBC的驱动就好,加载到你使用的java或者web工程下即可,要注意的是一定要看好自己的MySQL的版本是不是和驱动的版本相适应,查看方法:命令窗口:mysql -V,一次查看自己的MySQL的版本。

2、代码实现连接数据库

(1)首先进行驱动的加载

Class.forName("com.mysql.cj.jdbc.Driver")

注意MySQL8.0版本的驱动加载要加上jc,这个很重要.

(2)定义一个String类型的url变量用来接受相关的控制信息

String url;
url="jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";

注意的其中的test使用的是你的数据库的名称,这个引人而异,其他的是一样的(访问本地数据库)。

(3)连接数据库

Connection =DriverManager.getConnection(url,"root","password");

root所对应的是你的用户名,如果忘记用户名或者懒。。。直接用root即可,password放的是你登录数据库使用的密码。

(4)书写sql语句

定义一个Stirng类型的sql变量用来保存sql语句,再使用PreparedStatement来执行sql语句

String sql="SELECT * FROM book";
PreParedStatement pst=connection.pst(sql);

注意在sql语句中可以使用通配符“?”来代替实际的额参数,但是在后面的是心中必须使用相应的函数进行传参和赋值。

String sql="UPDATE book SET bookno=?,bookname=?,author=?,press=?,price=? where id=?";
	PreparedStatement preparedStatement=connection.prepareStatement(sql);
	preparedStatement.setString(1, bookno);
	preparedStatement.setString(2, bookname);
	preparedStatement.setString(3, author);
	preparedStatement.setString(4, press);
	preparedStatement.setInt(5, price);	
	preparedStatement.setInt(6, id);

以上可以使用在方法中,利用形参进行赋值。此时完成了对数据库相应的操作。

(5)输出sql(结果集)

结果集要是用相应的preparedStatement的方法进产生和接收。详见博客https://www.cnblogs.com/cai662009/p/8046410.html

根据不同的数据库的操作使用不同的方法,以SELECT为例:要进行数据库的遍历和输出

ResultSet resultset=preparedStatement.executeQuery();
while(resultset.next())
{
System.out.println(resultSet.getString(1)+"    "
							   +resultSet.getString(2)+"    "
							   +resultSet.getString(3)+"    "
							   +resultSet.getString(4)+"    "
							   +resultSet.getString(5)+"    "
							   +resultSet.getString(6));
}

这样就完成了数据库所有元素的输出,里面的数字1等是表明了元素在语句中的位置,在“*”中就代表了他们在数据库中的位置。

也可以用字符串来保存相关的内容然后一行一行的直接输出字符串。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

基本上就是这些,附上代码,不明白的应该会找到答案

import java.util.*;
import org.omg.PortableInterceptor.ServerRequestInfo; 
import java.lang.*; import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.io.*;
public class Main { 	
//添加的函数 
public static boolean add (int id,String bookno,String bookname,String author,String press,int price)
 { 	try 
   { 		String sql="INSERT INTO book VALUES (?,?,?,?,?,?)"; 		PreparedStatement preparedStatement=connection.prepareStatement(sql); 		preparedStatement.setInt(1, id); 
preparedStatement.setString(2, bookno);
preparedStatement.setString(3, bookname); 
preparedStatement.setString(4, author);
preparedStatement.setString(5, press); 		
preparedStatement.setInt(6, price);	 	    
preparedStatement.executeUpdate();//用来产生结果集,但是暂时不输出 	    preparedStatement.close(); 	   
 System.out.println("添加成功"); 		
return true; 	} 
catch (Exception e) { 		
// TODO: handle exception 		
System.out.println("添加失败,注意主键重合"); 		
	return false; 	
} 
} 
//删除函数 
public static void delete(String bookno) throws SQLException 
{ 	String sql="DELETE FROM book WHERE bookno=?"; 
	PreparedStatement preparedStatement=connection.prepareStatement(sql);    
 try { 		
preparedStatement.setString(1, bookno); 
preparedStatement.executeUpdate(); 
preparedStatement.close(); 
System.out.println("删除成功");  
	} 
catch (SQLException e) { 
System.out.println("删除失败,表中无此元素");     		
//e.printStackTrace(); 	
} 
} 
//修改函数 
public static void change(int id,String bookno,String bookname,String author,String press,int price) 
{ 	
try { 	
String sql="UPDATE book SET bookno=?,bookname=?,author=?,press=?,price=? where id=?"; 	PreparedStatement preparedStatement=connection.prepareStatement(sql); 	preparedStatement.setString(1, bookno); 	
preparedStatement.setString(2, bookname); 	
preparedStatement.setString(3, author); 	
preparedStatement.setString(4, press); 	
preparedStatement.setInt(5, price);	 	
preparedStatement.setInt(6, id);    
 preparedStatement.executeUpdate();//用来产生结果集,但是暂时不输出     preparedStatement.close();     
System.out.println("修改成功"); 	
} catch (Exception e) { 	
	// TODO: handle exception 		
System.out.println("修改失败,错误代码"); 	
	e.printStackTrace(); 	
}
 } 
//查询函数 
public static void select(String bookno) { 	String sql="SELECT * FROM book WHERE bookno=?"; 	
try { 		
PreparedStatement preparedStatement=connection.prepareStatement(sql); 		preparedStatement.setString(1, bookno); 		
ResultSet resultSet=preparedStatement.executeQuery(); 		
String string=""; 		
//int judge; 		
while(resultSet.next()) 		
{
 //			judge=resultSet.getInt(1); 
string+=resultSet.getString(1) + "\t" + resultSet.getString(2) + "\t" +resultSet.getString(3) + "\t" + resultSet.getString(4) + "\t"+ resultSet.getString(5) + "\t" + resultSet.getString(6); 	
	} 		
if(string=="") 			
{  System.out.println("无该信息"); 		
return; 	} 	
else { 			
System.out.println("查找成功"); 			
System.out.println(string); 			
}       
  preparedStatement.close();         
resultSet.close(); 	
} catch (SQLException e) { 	
System.out.println("查找失败,检查后重试"); 
	//	e.printStackTrace(); 	
}
 } 
//输出函数 
public static void display() 
{     
try {    
String sql="SELECT * FROM book"; 		
PreparedStatement preparedStatement=connection.prepareStatement(sql); 		
String string=""; 		
ResultSet resultSet=preparedStatement.executeQuery(); 		
while(resultSet.next()) 		
{ System.out.println(resultSet.getString(1)+"    " 						+resultSet.getString(2)+"    " 							 
+resultSet.getString(3)+"    " 							
+resultSet.getString(4)+"    " 							   
+resultSet.getString(5)+"    " 							   
+resultSet.getString(6)); 
} 	
} 
catch (SQLException e) { 		
e.printStackTrace(); 	
}    
} 
static String url; 
static Connection connection; 
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; 
 public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName("com.mysql.cj.jdbc.Driver"); 
url="jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";//写在整行上的驱动加载异常 
connection=DriverManager.getConnection(url, "root","123456");//三个参数 //connection=DriverManager.getConnection(url); 
System.out.println("添加"); 
add(7,"0007" , "singer", "wanglihong", "ffff", 80);
//因为设置了主键,所以添加时一定注意不能与以有的主键重合 
display(); 
System.out.println("修改"); 
change(1, "0001", "DataStruct", "ZhangGuangMei", "eeee", 15);
 display(); 
System.out.println("删除"); 
delete("0003"); 
display(); 
System.out.println("查找");
 select("0001"); 
} 
}

以上就是全部见解,希望大佬指正,如有错误,会及时更新。

发布了47 篇原创文章 · 获赞 6 · 访问量 5220

猜你喜欢

转载自blog.csdn.net/qq_41705207/article/details/89299676