create table denglu(

uname varchar(30),

upwd varchar(30)

)

insert into denglu values('诗书','123')

insert into denglu values('画唱','456')

--drop table denglu

package JDBC;

import java.sql.*;

import java.util.Scanner;

public class dengLu {

public static void main(String[] args) throws Exception{

Scanner s=new Scanner(System.in);

System.out.println("请输入用户名");

String uname=s.next();

System.out.println("请输入用户密码");

String upwd=s.next();

//1、导入数据包(就是把sqljdbc4-2.0.jar导入文件夹中某处的里面)

//2、加载数据包(静态加载类加载这个包,就是用下面的代码)

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

//3、建立数据库链接的对象Connection

//4.链接的数据库位置(jdbc:sqlserver://localhost;)

//5.数据库名6.用户名7.密码

//jdbc:sqlserver://localhost;databaseName=yonghu,qqq,123

Connection con=

DriverManager.getConnection("jdbc:sqlserver://localhost;"

+ "databaseName=yonghu","qqq","123");

//8、建立执行sql语句的对象(statement)

String sql="select * from denglu where uname=? and upwd=?";

System.out.println(sql);

//用Statement sta=con.createStatement();会有注入攻击,所以不用。

PreparedStatement ps=con.prepareStatement(sql);//传入sql语句

ps.setObject(1,uname);//"n"代表SQL语句中的第n个"?"

ps.setObject(2,upwd);

//9、写sql语句,执行

//10、建立得到数据的对象(ResultSet)

ResultSet res=ps.executeQuery();

//11、遍历数据

while(res.next()){

System.out.println("用“getObject(1)”得到的用户名为:"

+res.getObject(1)+";");

System.out.println("用“getObject(列名)”得到的用户名为:"

+res.getObject("uname")+" ;");

System.out.println("用“getObject(列名)”得到的密码为: "

+res.getObject("upwd"));

//12、关闭链接

//什么是防注入?直接字符串拼接,用户再后输入一个or 1=1的时候,那么这个

//条件是肯定成立的,所以用户输入不输入用户名没有多大的关系了

//为了解决这个问题,就要使用preparedstatement解决,它默认将

//sql语句编译成函数,每次只要传入相应的参数就可以了,就可以

//防止用户sql注入。

//预处理:我们每次对于数据库操作数据库都要将sql语句编译成函数,

//如果我们使用预处理的时候,数据库就默认生成了一个函数,以后再

//传入相同的内容的时候,只需要调用这个函数就可以了,这个就可以提升

//sql执行的效率。

}

}

}

建立学生表,包含学生编号,姓名,年龄,性别,地址,增加学生实体类,编写返回学生信息的集合,制作增删改查,要求使用预处理

create table student(

id int primary key identity(1, 1),

name nvarchar (20) ,

age int check (Age>5 and Age<60),

sex nvarchar (10) check(sex='男'or sex='女'),

address nvarchar (20)

)

insert into student values('诗书',19,'男','江西')

insert into student values('江唯',20,'女','湖南')

insert into student values('嘉怡',21,'女','上海')

insert into student values('画唱',22,'男','北京')

insert into student values('点赞',20,'男','武汉')

--select * from student

--delete  from student

--drop table student

package StudentJDBC;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.*;

import JDBC.renYuanLeiXing;

public class JDBCZSGC {

//SelectDanGeRenYuan搜索单个人员

public static ResultSet SelectDanGeStudent = null;

public static Scanner s = new Scanner(System.in);

public static void bianLiStudentFangFa

(ArrayList studentJiHe) {

for (student i : studentJiHe) {

System.out.println(i);

}

}

//

//chuanZhiDaoJiHeDeFangFa:为传值到集合的方法,

//会把sql执行时,调用这个方法得到的值,传值时,查到内容时

//,查到的内容都会加到ArrayList集合studentJiHe中,

//studentJiHe的才可能有内容,size()大小值才可能不为0

//

//size()大小值>0来判断,集合是否有内容

//

//chuanZhiDaoJiHeDeFangFa(String sql)前面的

//

//public static ArrayList表示

//

//之后返回的类型为只接受student类的内容的ArrayList集合,

//比如下面的return studentJiHe;就可以证实

//自己总结的语法:

//public static 类型 被命名的名;或public static 类型

//

//方法名(类型  被传的值的被命名的名)

public static ArrayList

chuanZhiDaoJiHeDeFangFa(ResultSet res) {

ArrayList studentJiHe =

new ArrayList();

try {

while (res.next()) {

student studentClass =

new student();

studentClass.setId

(res.getInt(1));

studentClass.setName

(res.getString(2));

studentClass.setAge

(res.getInt(3));

studentClass.setSex

(res.getString(4));

studentClass.setAddress

(res.getString(5));

studentJiHe.add(studentClass);

//

//

//以上是把内容加到集合中,不这么写,

//下面的增删改查等的集合长度都会为0,集合中会没内容,

//

//这里getStudent(String sql)

}

} catch (SQLException e) {

e.printStackTrace();

}

return studentJiHe;

}

public static void main(String[] args)

throws Exception {

boolean b = true;

while (true) {

renYuanFengZhuangFangFa();

}

}

private static void renYuanFengZhuangFangFa()

throws ClassNotFoundException,

SQLException {

System.out.println("选项:1.打印所有的人员信息\n"

+ "2.输入编号修改指定人员信息\n"

+ "3.输入编号查询单个人员信息\n"

+ "4.删除指定人员信息\n"

+ "5.增加人员信息");

int xuanXiangAll = s.nextInt();

//

//xuanXiangAll,xuanXiangAll_a等的命名方式可让我知道

//xuanXiangAll_a是被某个xuanXiangAll套住的,

//xuanXiangAll_a在xuanXiangAll里面

if (xuanXiangAll == 1) {

Connection con = bianLiAllStudentXinXiFangFa();

//

//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

//

//

//

//Connection con = DriverManager.getConnection(

//

//

//

//"jdbc:sqlserver://localhost;databaseName=yonghu", "qqq",

//

//

//

//"123");

//

//

//

//String sql = "select * from student ";

ResultSet res = DBUtils.Select(sql);

这一句不可用,就算DBUtils中用了prepareStatement也不行

//

//

//PreparedStatement ps = con.prepareStatement(sql);

//

//ResultSet res =ps.executeQuery();

//

//

用PreparedStatement时,用executeQuery();其余用executeQuery(sql);

//

//

//while (res.next()) {

//

//

//

//System.out.println("编号:"+res.getInt("id") + ";\t"

//

//

//

//+"名字:"+ res.getString("name") + ";\t"

//

//+"年龄:"+ res.getInt("age") + ";\t"

//+"性别:"+ res.getString("sex") + ";\t"

//+"地址:"+ res.getString("address")+ ";\t");

//

//

//

//}

}

else if (xuanXiangAll == 2) {

System.out.println("---执行修改操作---");

System.out.println("请输入你要修改的人员编号");

bianLiAllStudentXinXiFangFa();

int id = s.nextInt();

String sqlDanGe = "select * from student where id=?";

Connection con = bianLiAllStudentXinXiFangFa();

PreparedStatement ps1=con.prepareStatement(sqlDanGe);

ps1.setObject(1,id);

System.out.println(sqlDanGe);

//ResultSet res1 = ps1.executeQuery();

SelectDanGeStudent = ps1.executeQuery();

ArrayList studentJiHe = chuanZhiDaoJiHeDeFangFa

(SelectDanGeStudent);//return出,打印出内容

System.out.println(studentJiHe.size());

if (studentJiHe.size()>0) {

//danGeRenYuanXinXi单个人员信息

for (student danGeRenYuanXinXi : studentJiHe)

{

System.out.println(danGeRenYuanXinXi);

}

System.out.println("请选择你要修改该人员的哪项内容");

System.out.println("1.人员名字2.人员地址");

int xuanXiangAll_a = s.nextInt();

if (xuanXiangAll_a == 1) {

System.out.println("请输入该人员的新名字");

String newName = s.next();

String sqlXiuGai = "update student set name=?"

+ " where id=?";

//报错为对象错,就可能为SQL语句中的表名错了

PreparedStatement ps11=con.prepareStatement(sqlXiuGai);

//自己总结的语法:prepareStatement(要执行的SQL语句),

//要执行的SQL语句不要写错或共用了,下面的ps11位置的内容要

//和上面的ps11位置的内容一样的内容

ps11.setObject(1,newName);

ps11.setObject(2,id);

if (ps11.executeUpdate() > 0) {

System.out.println("名字修改成功");

bianLiAllStudentXinXiFangFa();

} else {

System.out.println("修改失败,请重试");

}

}  else if (xuanXiangAll_a == 2) {

System.out.println("请输入新地址");

String newDiZhi = s.next();

String sqlXiuGai = "update student set address=?"

+ " where id=?";

PreparedStatement ps11=con.prepareStatement(sqlXiuGai);

ps11.setObject(1,newDiZhi);

ps11.setObject(2,id);

if (ps11

.executeUpdate() > 0) {

System.out.println("修改成功");

bianLiAllStudentXinXiFangFa();

} else {

System.out.println("修改失败,请重试");

}

}

} else {

System.out.println("编号输入错误");

}

}

else if (xuanXiangAll == 3) {

System.out.println("---执行查询单个人员信息的操作---");

System.out.println("请输入你要查询的人员ID");

bianLiAllStudentXinXiFangFa();

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

Connection con = DriverManager.getConnection(

"jdbc:sqlserver://localhost;databaseName=yonghu", "qqq",

"123");

int id = s.nextInt();

String sql = "select * from student where "

+ "id=?";

PreparedStatement ps=con.prepareStatement(sql);//传入sql语句

ps.setObject(1,id);

ResultSet res = ps.executeQuery();

//res.getObject("uname");

while (res.next()) {

System.out.println("编号:"+res.getInt("id") + ";\t"

+"名字:"+ res.getString("name") + ";\t"

+"年龄:"+ res.getInt("age") + ";\t"

+"性别:"+ res.getString("sex") + ";\t"

+"地址:"+ res.getString("address")+ ";\t");

}

}

else if (xuanXiangAll == 4) {

System.out.println("---执行删除操作---");

System.out.println("请输入你要删除的学生ID");

//bianliAllStudentXinXi()

//为我用鼠标右键封装的遍历所有学生信息的方法,调用同一个

Connection con = bianLiAllStudentXinXiFangFa();

//因为下面有con所以这里要声明Connection con

int deleteId = s.nextInt();

String sql2 = "delete student where id=?";

PreparedStatement ps2=con.prepareStatement(sql2);

ps2.setInt(1, deleteId);

//ResultSet res2 = ps2.executeQuery();这句这里不必些写,因为下面没必要遍历

//

//自己的总结:以下顺序不可错:1.接受输入

//2.SQL语句

//3.用prepareStatement();执行SQL语句

//4.用setInt();

if (ps2.executeUpdate() > 0) {

System.out.println("删除成功");

bianLiAllStudentXinXiFangFa();

//自己总结的调用方法的语法:方法名();

} else {

System.out.println("删除失败,请重试");

}

}

else if (xuanXiangAll == 5) {

bianLiAllStudentXinXiFangFa();

System.out.println("---执行增加操作---");

Class.forName("com.microsoft.sqlserver."

+ "jdbc.SQLServerDriver");

Connection con = DriverManager.getConnection(

"jdbc:sqlserver://localhost;databaseName=yonghu", "qqq",

"123");

//

//System.out.println("请输入要增加的编号");

//

//编号id在SQL中设置为自增,所以不必加入

//

//int insertId = s.nextInt();

System.out.println("请输入要增加学生的名字");

String insertName = s.next();

System.out.println("请输入要增加学生的年龄(60>年龄>5)");

int insertAge = s.nextInt();

System.out.println("请输入要增加学生的性别(只可以填“男”或“女”)");

String insertSex = s.next();

System.out.println("请输入要增加学生的地址");

String insertAddress = s.next();

String sql = "insert into student values(?,?,?,?)";

PreparedStatement ps=con.prepareStatement(sql);

ps.setObject(1,insertName);

ps.setObject(2,insertAge);

ps.setObject(3,insertSex);

ps.setObject(4,insertAddress);

if (ps.executeUpdate() > 0) {

System.out.println("添加成功!");

bianLiAllStudentXinXiFangFa();

//自己总结的调用方法的语法:方法名();

} else {

System.out.println("添加失败,请重试!");

}

}

else {

System.out.println("编号输入错误");

}

}

private static Connection bianLiAllStudentXinXiFangFa()

throws ClassNotFoundException, SQLException {

Class.forName("com.microsoft.sqlserver."

+ "jdbc.SQLServerDriver");

Connection con = DriverManager.getConnection(

"jdbc:sqlserver://localhost;databaseName=yonghu",

"qqq",

"123");

String sql = "select * from student";

PreparedStatement ps=con.prepareStatement(sql);

ResultSet res = ps.executeQuery();

System.out.println("_________");

while (res.next()) {

System.out.println("编号:"+res.getInt("id") + ";\t"

+"名字:"+ res.getString("name") + ";\t"

+"年龄:"+ res.getInt("age") + ";\t"

+"性别:"+ res.getString("sex") + ";\t"

+"地址:"+ res.getString("address")+ ";\t");

}

System.out.println("_________");

return con;

}

}

package StudentJDBC;

import JDBC.renYuanLeiXing;

public class student {

private int id;

private String name;

private int age;

private String sex ;

private String address ;

//

//

//private renYuanLeiXing renYuanLeiXingID;

public student() {

}

public int getRenYuanID() {

return id;

}

public void setId(int renYuanID) {

this.id = renYuanID;

}

public String getRenYuanDiZhi() {

return name;

}

public void setName1(String renYuanDiZhi) {

this.name = renYuanDiZhi;

}

public student(int id, String name,

int age, String sex, String address) {

super();

this.id = id;

this.name = name;

this.age = age;

this.sex = sex;

this.address = address;

}

@Override

public String toString() {

return "student [id=" + id + ", name="

+ name + ", age=" + age + ", sex="

+ sex + ", address=" + address + "]";

}

public int getId() {

return id;

}

public void setId1(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

}

java里SQL insert操作的语法_Java含个人总结语法:JDBC,学生表,实体类,集合,增删改查,注入,预处理【诗书画唱】...相关推荐

  1. java file取不到linux文件_Java中高级核心知识全面解析——Linux基本命令(切换、增删改查、压缩文件、权限命令)...

    一.目录切换命令 cd usr: 切换到该目录下usr目录 cd ..(或cd../): 切换到上一层目录 cd /: 切换到系统根目录 cd ~: 切换到用户主目录 cd -: 切换到上一个操作所在 ...

  2. java 怎么快速找到实现类_JAVA懒开发:FreeMarker快速实现类的增删改查接口

    太懒,不多说看图,mybatis-generator工具执行后的项目结构 这个时候没得额service接口类,和service实现类,也没的controller类 执行引擎工具类BeanGenerat ...

  3. 使用JDBC,完成对如下表的增删改查操作

    使用JDBC,完成对如下表的增删改查操作 增加操作 使用循环和随机数技巧,增加1000个数据.要求积分在0-200,注册时间均匀分布在2018年各个月份.从26个字母中随机取出3个字母作为昵称,昵称不 ...

  4. jaba窗体连接mysql增删改查_知识实现——Java使用jdbc连接MySql数据库,实现增删改查...

    Java使用jdbc连接MySql数据库,实现增删改查 首先,导入MySql连接数据库的jar包,我用的是 mysql连接jar包 DB类,用于获得数据库连接 import java.sql.Driv ...

  5. 数据操作类:增删改查

    一.数据连接类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  6. 【微信小程序系列】微信小程序超简单教程,基本语法,获取用户基本数据信息,实现对云数据库的增删改查及小程序外部api的引用示例(附源码)

    [微信小程序系列]微信小程序超简单教程 小程序项目结构 静态页面的构成 HTML:结构 css:样式 js:行为 小程序 页面全部存放在pages, 而且pages目录只能存放页面 页面包括4个文件, ...

  7. c语言创建空顺序表的程序,C语言实现顺序表的创建与增删改查操作

    SqListDemo.c /* 线性表的顺序存储实现 */ #include #include #include // 定义符号常量 #define LIST_INIT_SIZE 50 #define ...

  8. (java)水果类(增删改查)

    public class FruitBean {private String name;//名字private int num;//数量private double price;//价格private ...

  9. JAVA中用 SQL语句操作小结

    1.添加记录(INSERT) 使用SQL语句的INSERT命令可以向数据库中插入记录,INSERT命令的基本形式为: INSERT INTO 表名 [(字段名1,字段名2-)] VALUES (值1, ...

最新文章

  1. MIT校长公开信澄清:是学校与南科大合作,不是陈刚个人
  2. freescale imx6 编译 linux ltib,TQIMX6Q技术分享——LTIB安装配置(转)
  3. 【科研必备】保持高效论文写作的10个原则!
  4. 小马哥spring编程核心思想_Spring核心思想理解
  5. yum php fpm5.6,CentOS 7 yum 安装php5.6
  6. 虚拟机python建站_搭建本地虚拟服务器linux(CentOS 7)的python虚拟环境(Hyper-V演示)...
  7. python ftplib bufsize_python:ftplib模块
  8. 新垣结衣AI换脸郭德纲 网友:换脸史上最惨的车祸现场
  9. Struts2入门这一篇就够了 1
  10. KVM 介绍(1):简介及安装
  11. Linux从入门到指令详解
  12. 10 ,盒图( 统计 ) boxplot :单盒,多盒
  13. magicbook java开发,作为一名IT编辑 荣耀MagicBook这三点打动了我
  14. VMware彻底删除、扫描添加导入,已安装好的虚拟计算机
  15. 蝴蝶影视服务器响应异常,elasticsearch的服务器响应异常及解决策略(转)
  16. 用surfaceview播放FFmpeg解码视屏
  17. linux eval命令详解,linux命令详解——eval
  18. ios打包报错: DXT1 compressed textures are not supported when publishing to iPhone
  19. CellphoneDB-细胞通讯软件
  20. 微信小程序实现生成二维码功能并下载到本地

热门文章

  1. python分解word文档为多个_如何将一个word文档按页分割成多个word文档-百度经验...
  2. Windows中快速获取文件目录的方法
  3. 计算机体系结构复习笔记
  4. 大量C语言、C++、C#、VC编程相关书籍下载
  5. 中式红木整装塑造出中式家居的浪漫氛围
  6. Android so文件函数加密
  7. 【180718】FC经典坦克大战源码
  8. 【C/C++】ifndef/define/endif的作用
  9. Intellij idea创建.xml文件
  10. UG\NX二次开发 Visual Studio平台工具集介绍