通过JDBK操作数据库

一、配置程序——让我们程序能找到数据库的驱动jar包
1.把.jar文件复制到项目中去,整合的时候方便。
2.在eclipse项目右击“构建路径”--“配置构建路径”--“库”--“添加外部jar”--找到数据库的驱动jar包--点击确定。会在左侧包资源管理器中出现“引用的库”,在里面就能找到我们刚才导入的jar包。
二、与数据库建立连接
1.加载数据访问驱动
2.连接到数据库
建立与MySQL数据库的连接:
Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动
Connection conn = DriverManager.getConnectio ("jdbc:mysql://127.0.0.1:3306/mydb","账号","密码");
Statement state = conn.createStatement();//建立数据库连接,获得连接对象conn;
建立与SQL Server数据库的连接
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载数据库驱动
Connection conn = DriverManager.getConnectio ("jdbc:sqlsever://127.0.0.1:1433/DatabaseName=mydb","账号","密码");//建立数据库连接,获得连接对象conn;
其中mydb是表名。
三、查询、插入、修改、删除数据库中的数据

建立表login

1.查询数据
1.1使用Statement接口制作一个登录验证

package com.itnba.maya.login;
import java.sql.*;
import java.util.*;
public class Test {public static void main(String[] args) throws Exception {Scanner sc = new Scanner(System.in);String zhang = sc.nextLine();String pas = sc.nextLine();Class.forName("com.mysql.jdbc.Driver");Connection conn =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/wang?characterEncoding=GBK", "root", "");//括号里面不能用空格Statement state = conn.createStatement();String sql = "select * from login where zhanghao='"+zhang+"' and  password = '"+pas+"'";ResultSet rs =  state.executeQuery(sql);//获得一个查询结果集。Boolean ok = rs.next();if(ok){System.out.println("恭喜您"+rs.getString(3)+"登录成功");}else{System.out.println("您输入的账号密码有误");}conn.close();}
}

账号密码输入正确时:输入 zhangsan  zhangsan 出现 “恭喜您张三登录成功”

账号密码输入错误时:输入 zhangsan  lisi    出现“您输入的账号密码有误”

但是上述方法会有“注入”问题出现,如输入   asdf' or 1=1 #会出现登录成功。输入中的单引号会和前面的单引号形成配对,而#会注释掉后面的语句,1=1随时成立,就会出现登录成功。

1.2使用PreparedStatement接口制作一个登录验证

public class Test {public static void main(String[] args) throws Exception {Scanner sc = new Scanner(System.in);String zhang = sc.nextLine();String pas = sc.nextLine();Class.forName("com.mysql.jdbc.Driver");Connection conn =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/wang?characterEncoding = GBK", "root", "");String sql = "select * from login where zhanghao=? and  password =?";PreparedStatement state = conn.prepareStatement(sql);state.setString(1, zhang);state.setString(2,pas);ResultSet rs =  state.executeQuery();Boolean ok = rs.next();if(ok){System.out.println("恭喜您"+rs.getString(3)+"登录成功");}else{System.out.println("您输入的账号密码有误");}conn.close();}

账号密码输入正确时:输入 zhangsan  zhangsan 出现 “恭喜您张三登录成功”

账号密码输入错误时:输入 zhangsan  lisi    出现“您输入的账号密码有误”

此种方式不会出现“注入” 问题。

2.向数据库中插入数据

2.1使用Statement接口插入数据

public static void main(String[] args) throws Exception {Scanner sc = new Scanner(System.in);String zhang = sc.nextLine();String pas = sc.nextLine();Class.forName("com.mysql.jdbc.Driver");Connection conn =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/wang?characterEncoding = GBK", "root", "");Statement state = conn.createStatement();String sql = "insert into wang (zhanghao,password,name) values('zhangyu','zhangyu','张宇')";state.executeUpdate(sql);//插入 删除 更新数据时用update
conn.close();
}

运行结果:

2.2使用PreparedStatement接口插入数据

    public static void main(String[] args) throws Exception {Class.forName("com.mysql.jdbc.Driver");Connection conn =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/wang?characterEncoding=GBK", "root", "");String sql ="insert into login (zhanghao,password,name) values(?,?,?)";PreparedStatement state = conn.prepareStatement(sql); state.setString(1, "zhangyu");state.setString(2,"zhangyu");state.setString(3,"张宇");state.executeUpdate();conn.close();
}

运行结果:

转载于:https://www.cnblogs.com/ermeng/p/6249978.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402350.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 系统应用编程——网络编程(常用命令解析)

1、telnet Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令&#…

灾难 BZOJ 2815

灾难 【样例输入】 5 0 1 0 1 0 2 3 0 2 0 【样例输出】 4 1 0 0 0 题解: 先跑出拓扑序 我们按拓扑序建立一棵“灭绝树” 灭绝树含义是当一个点灭绝时,它的子树将会全部灭绝 所以答案就是点在灭绝树中的子树大小 一个点如果灭绝,那么需要所有…

centos关于”running yum-complete-transaction first...

2019独角兽企业重金招聘Python工程师标准>>> 今天在用yum安装软件出错几次户,总是有提示信息: There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them. The program yum…

js身份证号、电话脱敏处理(用*替换中间数据)

数字类型 certificatecodecopy certificatecode.replace(/^(.{6})(?:\d)(.{4})$/, "\$1****\$2"); 所有类型 enginenocopy engineno.replace(/^(.{2})(?:\w)(.{1})$/, "\$1****\$2"); enginenocopy engineno.replace(/^(.{4})(?:\w)(.{4})$/, &…

Linux 系统应用编程——网络编程(I/O模型)

Unix下可用的5种I/O模型:阻塞I/O非阻塞I/OI/O复用(select和poll)信号驱动I/O(SIGIO)异步I/O(POSIX的aio_系列函数)一个输入操作通常包括两个不同的阶段:1)等待数据准备好;2)从内核向进程复制数据;对于一个套…

Linux 系统应用编程——网络编程(TCP/IP 数据包格式解析)

图中括号中的数字代表的是当前域所占的空间大小,单位是bit位。 黄色的是数据链路层的头部,一共14字节 绿色的部分是IP头部,一般是20字节 紫色部分是TCP头部,一般是20字节 最内部的是数据包内容 黄色部分:链路层 目的MA…

Linux 系统应用编程——网络编程(TCP 协议三次握手过程)

TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标示: SYN ( synchronous 建立联机 ) ACK ( acknowledgement 确认 ) PSH ( push 传送…

基于ELK的简单数据分析

原文链接: http://www.open-open.com/lib/view/open1455673846058.html 环境 CentOS 6.5 64位JDK 1.8.0_20Elasticsearch 1.7.3LogStash 1.5.6Kibana 4.1.4介绍 ElasticSearch是有名的开源搜索引擎,现在很多公司使用ELK技术栈做日志分析,比如…

[win10] 在桌面上显示计算机、控制面板、网络

1. 右击桌面,选择个性化 2. 选择”主题", 点击“桌面图标设置” 3. 把想要放桌面的图标给钩上

linux下共享文件夹(windows可访问,linux也可访问)

2019独角兽企业重金招聘Python工程师标准>>> 本文是转字网上的两段,如果是菜鸟,想懂有点难度,我这里给点注释 在linux上共享文件夹windows下看 ******************************************* 首先给linux设一个ip,要和…

Linux---进程调度相关命令解析

进程相关命令 1、ps 查看系统中的进程 使用方式:ps [options] [--help] 说明:显示瞬间进程 (process) 的动态 参数:ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义 ps命令常用用法(方便查看系统进程) 1&a…

Linux 系统应用编程——多线程经典问题(生产者-消费者)

“生产者——消费者”问题是Linux多线程编程中的经典问题,主要是利用信号量处理线程间的同步和互斥问题。 “生产者——消费者”问题描述如下: 有一个有限缓冲区(这里用有名管道实现 FIFO 式缓冲区)和两个线程:生产者和…

Linux 系统应用编程——进程间通信(下)

在前面,我们学习了传统的进程间通信方式——无名管道(pipe)、有名管道(fifo)和信号(signal)。 下面我们来学习 System V IPC 对象: 1、共享内存(share memory&#xff0…

.balignl 16,0xdeadbeef浅析

http://zqwt.012.blog.163.com/blog/static/12044684201031102956976/ 最近在分析u-boot的源代码,看到这一行: .balignl 16, 0xdeadbeef不知道为什么要这样写,0xdeadbeef,明显是个单词组,写在这里有何意义呢&am…

使用maven导入任意jar包

http://mvnrepository.com/ 我这里,因为是spark1.5.2版本。 保存,maven会自动下载jar包到本地仓库。 转载于:https://www.cnblogs.com/lchzls/p/6281764.html

Linux下静态IP地址的设置及TFTP服务的搭建

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。TFTP承载在UDP上,提供不可靠的数据流传输服务,…

bzoj 3924 幻想乡战略游戏

题目大意: 有边权点权的树,动态修改点权 每次修改后求带权重心x (\(minimize\) \(S\sum_i val[i]*dist[x][i]\)) 分析: 从暴力找突破口: 对于边x,y,设长度为len,切断后x半边树权值和为\(w_1\),y…

Linux 系统应用编程——网络编程(基础篇)

一、网络体系结构 1、OSI模型和TCP/IP 模型 网络体系结构指的是网络的分层结构以及每层使用的协议的集合。其中最著名的就是OSI协议参考模型,他是基于国际标准化组织(OSI)的建议发展起来的。它分为7个层次:应用层、表示层、会话层…

C++中函数的默认参数

使用方法: (1)在函数声明或定义时,直接对参数赋值,该参数就是默认参数。(2)在函数调用时,省略部分或全部参数,这时就会使用默认参数进行代替。注意事项: &…

Linux 系统应用编程——网络编程(socket编程)

二、网络编程基础 1、套接字概述 套接字就是网络编程的ID。网络通信,归根到底还是进程间的通信(不同计算机上的进程间的通信)。在网络中,每一个节点(计算机或路由器)都有一个网络地址,也就是IP地…