一、首先用mySQL连接java进行数据库的增删改查
在mySQL 中新建一个数据库名字为 myschool ,其中有一张student 表,id自增
表结构如图 表中有三条数据
1、现在连接数据库,从java中往student表中增加一条数据
public class TestOne {
public static void main(String[] args) {
try {// 加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DataBaseName=myschool", "sa", "root");
String sql = "insert into student values('小二',15,'655777')";// id自增的字段,在sqlserver中不用写该字段
Statement state = conn.createStatement();
int a = state.executeUpdate(sql); //executeUpdate 的返回值是一个整数,(int)指受影响的行数
// 若添加成功,则 a=1 ,
if(a>0){
System.out.println("添加成功!");
}else{
System.out.println("添加失败!");
}
state.close();
conn.close();//先定义的后关闭,conn先定义,股后关闭
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果:
此时 select * from student 得到的结果为:
“小二” 数据添加成功了
方法executeUpdate用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。executeUpdate 的返回值是一个整数(int),指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
String sql = "insert into student values('小二',15,'655777')"; // id字段自增,连接sqlserver中不用写该字段,但如果连接的是mysql,
需要写成 String sql = "insert into student values(null,'小二',15,'655777')";
2、删除“小二” 的sql语句
public class TestOne {
public static void main(String[] args) {
try {// 加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DataBaseName=myschool", "sa", "root");
String sql = "delete from student where name = '小二'"; // 1
Statement state = conn.createStatement();
int a = state.executeUpdate(sql); // 2
// 若添加成功,则 a=1 ,
if(a>0){
System.out.println("删除成功!");
}else{
System.out.println("删除失败!");
}
state.close();
conn.close();//先定义的后关闭,conn先定义,股后关闭
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果: 此时 查看数据库表中内容:
“小二”的数据成功删除
观察增加和删除代码块,两者的区别只在于 1 处的sql语句的不同
接下来我们来看查询的功能如何实现
3、查询 student 表中的全部内容
public class TestTwo {
public static void main(String[] args) {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DataBaseName=myschool", "sa", "root");
String sql = "select * from student";//1
Statement state = conn.createStatement();
ResultSet rs = state.executeQuery(sql);//2
// 利用循环ResultSet的元素来获得ResultSet的列表内容
while(rs.next()){
// 放入System.out.print()语句中,输出到控制台
System.out.print(rs.getInt("studentno")+"\t");
System.out.print(rs.getString("name")+"\t");
System.out.print(rs.getInt("age")+"\t");
System.out.print(rs.getString("tel")+"\t\n");
}
rs.close(); // ResultSet rs 最后定义的 要最先关闭
state.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果同上面数据库表中全部内容的最后一次查询:
结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等.
结果集读取数据的方法主要是getXxx(),他的参数可以是整型表示第几列(是从1开始的),还可以是列名。返回的是对应的Xxx类型的值。如果对应那列 是空值,Xxx是对象的话返回Xxx型的空值,如果Xxx是数字类型,如Float等则返回0,boolean返回false.使用getString()可以返回所有的列的值,但返回的都是字符串类型的
q其中 rs.getXxx对应的是后边括号里对当前所操作的数据库中该表的字段的数据类型。
System.out.print(rs.getInt("studentno")+"\t"); // 对应字段studentno的数据类型int
System.out.print(rs.getString("name")+"\t"); // 对应字段studentno的数据类型varchar(50)
System.out.print(rs.getInt("age")+"\t"); // 对应字段name的数据类型int
System.out.print(rs.getString("tel")+"\t\n"); // 对应字段tel的数据类型varchar(50)