通过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,一经查实,立即删除!

相关文章

scanf函数详解(下)

问题一如何让scanf()函数正确接受有空格的字符串&#xff1f;如: I love you!#include <stdio.h>int main(){char str[80];scanf("%s",str);printf("%s",str);return 0;}输入&#xff1a;I love you!上述程序并不能达到预期目的&#xff0c;scanf()扫…

77 大道理

1. 鲶鱼效应 以前&#xff0c;沙丁鱼在运输过程中成活率很低。后有人发现&#xff0c;若在沙丁鱼中放一条鲶鱼&#xff0c;情况却有所改观&#xff0c;成活率会大大提高。这是何故呢&#xff1f;原来鲶鱼在到了一个陌生的环境后&#xff0c;就会“性情急燥”&#xff0c;四处乱…

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

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

灾难 BZOJ 2815

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

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

2019独角兽企业重金招聘Python工程师标准>>> 今天在用yum安装软件出错几次户&#xff0c;总是有提示信息&#xff1a; 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模型&#xff1a;阻塞I/O非阻塞I/OI/O复用(select和poll)信号驱动I/O(SIGIO)异步I/O(POSIX的aio_系列函数)一个输入操作通常包括两个不同的阶段&#xff1a;1&#xff09;等待数据准备好&#xff1b;2&#xff09;从内核向进程复制数据&#xff1b;对于一个套…

Windows 7 OpenGL配置

Windows 7 OpenGL配置&#xff0c;解决“无法启动此程序,因为计算机中丢失glut32.dll。”转载于:https://www.cnblogs.com/yangai/p/6253332.html

servlet乱码 解决方法 2种方法

public class ResponseDemo1 extends HttpServlet {public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {test1(resp);}//方法1:public void test1(HttpServletResponse resp) throws IOException, UnsupportedEncod…

C#通过属性名字符串获取、设置对象属性值

目录 #通过反射获取对象属性值并设置属性值 0、定义一个类1、通过属性名&#xff08;字符串&#xff09;获取对象属性值2、通过属性名&#xff08;字符串&#xff09;设置对象属性值#获取对象的所有属性名称及类型#判断对象是否包含某个属性回到顶部 #通过反射获取对象属性值…

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

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

mongodb防火墙配置

http://ruby-china.org/topics/20128 https://docs.mongodb.com/manual/tutorial/configure-linux-iptables-firewall/转载于:https://www.cnblogs.com/diyunpeng/p/6256928.html

【python】动态调用函数名

环境&#xff1a; C:\Users\DELL\Desktop>python -V Python 3.9.10 源码&#xff1a; #!/bin/env python # encoding utf-8 import sys import socket# 获取本机ip地址 def get_host_ip():try:s socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.connect((8.8.8.8, …

AC Again hdoj 1582 搜索

AC Again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 306 Accepted Submission(s): 84 Description “AC”这个单词大概是我们 ACMers 最希望听到的回答了。不过如果把它写下来&#xff0c;你还能认识吗&am…

Linux 系统应用编程——网络编程(利用TCP/IP 模型分析数据传输过程)

TCP/IP参考模型是一个非常基础&#xff0c;而且也非常重要的基础框架&#xff0c;要想入门数通这是个必须掌握的基本概念&#xff0c;本文档通过一个简单的示例&#xff0c;结合参考模型来分析一下数通的基本过程。网络环境非常简单&#xff0c;如下图所示&#xff0c;我们现在…

Python SQLAlchemy --3

本文為 Python SQLAlchemy ORM 一系列教學文&#xff1a; 刪除 學會如何查詢之後&#xff0c;就能夠進行後續的刪除、更新等操作。 同樣地&#xff0c;以幾個範例做為學習的捷徑。 123456789 user_1 User(user1, username1, password_1)user_2 User(user2, username2, passw…

C#DateTime.ToString格式化时间字符串

DateTime.ToString(string format) 中 format 参数&#xff08;区分大小写&#xff09;&#xff1a; 参数 含义 d 月中的某一天。一位数的日期没有前导零。 dd 月中的某一天。一位数的日期有一个前导零。 ddd 周中某天的缩写名称&#xff0c;在 AbbreviatedDayNam…

Wordpress中显示页面当前位置

Wordpress中显示页面当前位置 在浏览网站的时候&#xff0c;很多网站都提供了页面定位的功能&#xff0c;一般在文章的上方以这样的形式显示&#xff1a; 首页 >> 分类 >> 子分类 >> „ >> 阅读正文 那如何在wordpress中实现这样一个功能呢&#xff1…

CentOS8下 nginx+php7.4安装pdo_sqlsrv 连接 SQL SERVER2012数据库

参考自&#xff1a;https://blog.csdn.net/lwprain/article/details/109598560 关键步骤是一二三&#xff0c;结合 pecl install 正常安装(先安装dnf install unixODBC-devel)即可搞定 ------------------------------------------------------------------------------------…

ArcGIS Engine 编辑- ITask

转自原文ArcGIS Engine 编辑- ITask 下面的代码是我们定制的一个工作流-给等高线赋值 namespace EngineApplication { [Guid("5b0c0692-eaf7-4d64-9cee-c8c1afaf06f4")] [ClassInterface(ClassInterfaceType.None)] [ProgId("EditeTest.ContourTask")] pu…