JDBC,Statemrnt类

 例子:

package jdbc.my;

import java.sql.DriverManager;
import java.sql.ResultSet;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;

//1,Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。Statement对象,
//用于执行不带参数的简单SQL语句。 
//Statement的缺点:容易产生saql注入(即恶意注入); 比如一个varchar类型的字段输入chen'10,因为'是特殊符号会报错,注入成功

public class JdbcTest {

	public static void main(String[] args) throws Exception  {
		String user="root";
		String password="onno799967";
		String url="jdbc:mysql://localhost:3306/java1";//jdbc协议指向链接到哪个数据库,://的写法类似http协议http://
		//jdbc:协议
		//mysql://localhost:3306/mysql6 该协议链接到的数据库
		//加载jdbc驱动,通过反射的方式,把驱动创建实例,加载到系统中 
		Class.forName("com.mysql.jdbc.Driver");//com.mysql.jdbc.Driver为导入的jar包中的类,最后是类名,前面是包名
		
		//创建操作数据库接口的对象
		Connection conn=(Connection) DriverManager.getConnection(url, user, password);//建立数据库的连接,赋值给conn
/*		 DriverManager.getConnection(url, user, password);返回的是一个java包中的Connecttion类型的接口
		Connection conn指的是导入的包中的Connection类它是后面那个java类的实现类
		用接口给它的实现类赋值,相当于向下转型,向下转型的前提是多态,所以程序在底层应该有多态的语法,所以对于这样写是成立的。*/
		
		System.out.println("数据库连接成功");
		Statement stmt=(Statement) conn.createStatement();
		
		//操作数据库:创建表,插入语句,修改内容,删除内容用的都是Statement对象的executeUptate方法,因为它们都会改变数据库的形态
		//注:update:更新,execute:执行  query:查询
		//查询用的是Statement对象的executeQuery方法,返回ResultSet对象,这是一个集合,要遍历才能取值
		
		//建表语句1
		String createTableSql ="create table stu(id int primary key auto_increment,"+
		"sname varchar(50) not null, sage int);";
		int i=stmt.executeUpdate(createTableSql);//通过statement执行sql语句,返回值表示影响的行数
		//影响行:类似执行sql语句时成功添加几行
		System.out.println("影响行数"+i);
		
		//插入语句
		String inserSql="insert into stu(sname,sage) values('zhangsan',20),('lisi',18);";
		int j=stmt.executeUpdate(inserSql);//执行sql语句,j表示成功执行的行数
		System.out.println("添加行数"+j);
		
		//修改
		String updataSql="update stu set sage=21 where sname='zhangsan';";
		int k=stmt.executeUpdate(updataSql);//修改张三的年龄为21
		System.out.println("修改的数量"+k);
		
		//删除
		String deleteSql="delete from stu where sname='zhangsan';";
		int n=stmt.executeUpdate(deleteSql);
		System.out.println("删除的数量"+n);
		
		//查询
		String querySql="select id,sname,sage from stu;";
		ResultSet rs=stmt.executeQuery(querySql);//执行查询所有学生信息,返回一个结果:ResultSet;
		System.out.println("查询成功");
		//遍历rs
		while(rs.next())   //结果为布尔型为true表示还有下一条数据,继续遍历,false表示没有下一条,遍历结束,注意:getxxx()方法会移动指针
		{
//			//获得字段值的方法1通过字段索引获得字段的值,注意:这里索引是从1开始的
//			int id=rs.getInt(i); //columnIndex字段索引号
//			//获得id,id在sql中是第一个查询的字段
//			String sname=rs.getNString(2);//获得sname值
//			int sage =rs.getInt(3);//获得sage值*/
//			System.out.println(id+","+sname+","+sage);
			
			//获得字段值的方法2:通过字段名称获得
			int _id=rs.getInt("id");//获得id
			String _sname=rs.getString("sname");
			int _sage=rs.getInt("sage");
			System.out.println(_id+","+_sname+","+_sage);
		}
		
		if(stmt!=null)  //Statement对象需要关闭
			stmt.close();//当库不存在,时connection为空,stmt为空,这时候关,会报空指针异常
		if(conn!=null)   //建立的链接需要关闭
			conn.close();
	}
		
}

自己写的一个简单的程序:

package jdbc.my;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

//使用Statement类
import com.mysql.jdbc.*;

public class JdbcbyMine1 {

	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		String url="jdbc:mysql://localhost:3306/java2";
		String user="root";
		String password="onno799967";
		Class.forName("com.mysql.jdbc.Driver");
		Connection conn=DriverManager.getConnection(url, user, password);
		Statement stmt=(Statement) conn.createStatement();
		//创建表
		String s1="create table stu1(id int primary key auto_increment,sname varchar(20) not null,age int);";
		int i=stmt.executeUpdate(s1);
		System.out.println("影响行数:"+i);
		
		//添加数据
		s1="insert into stu1(sname,age) values('a',23),('b',40),('c',18);";
		i=stmt.executeUpdate(s1);
		System.out.println("添加行数:"+i);
		
		//修改数据
		s1="update stu1 set age=0 where sname='a';";
		i=stmt.executeUpdate(s1);
		System.out.println("修改行数:"+i);
		
		//删除数据
		s1="delete from stu1 where age=40;";
		i=stmt.executeUpdate(s1);
		System.out.println("删除行数"+i);
		
		//查询数据
		s1="select * from stu1;";
		ResultSet rs=stmt.executeQuery(s1);
		while(rs.next())
		{
			int id=rs.getInt(1);
			String sname=rs.getString(2);
			int age=rs.getInt(3);
			System.out.println(id+" "+sname+" "+age);
		}
		if(stmt==null)
			stmt.close();
		if(conn==null)
			conn.close();
				
	}

}

输出:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值