MySQL 基础知识-06

目录

一、MySQL的JDBC操作

二、MySQL的pymysql操作


一、MySQL的JDBC操作

JDBC(java DataBase Connectivity, JAVA数据库连接)是一种用于执行SQL语句的JAVA API。通俗点讲就是通过java远程连接数据库(MySQL,Server,Oracle),然后调用java的相关方法实现数据库的操作。JDBC是java访问数据库的标准规范。

JDBC需要连接驱动,驱动是两个设备进行通信需要满足的通信数据格式(是java远程连接数据库的依赖),连接不同的数据库需要提供不同的连接驱动。

JDBC的核心类与接口

DriverManage :驱动管理,用于注册驱动

Connection     :表示与数据库创建的连接

Statement/PrepareStatement    :   操作数据库sql语句的对象

ResultSet        :结果集或一张虚拟表

java本身是没有上述类和接口的,只有整合了mysql的jdbc驱动才可以使用。

 executeUpdate()用于执行增删改返回rows(int类型)行数,executeQuery()用于执行查询返回ResultSet。Statement和PreparedStatement是执行器。

我们使用idea进行开发:首先向idea添加驱动

把驱动jar包粘贴到这个lib目录下:

将jar包与java项目进行整合:

然后就可以进行写代码了:准备数据:

new com.mysql.jdbc.Driver默认会有异常我们将其抛出,注意”\t“表示回车符号,不能写成'\t',如果写成'\t',java会将其视为一个普通字符会使用它的ASCII码9进行计算。

上述代码还可以进行优化:A、注册驱动可以不用写,java已经自动注册好了。B、在获取每一列数据时,我们可以不写列名直接写列的索引(从1开始)

思考:当不知道要查询的表有多少列时,且不知道列是什么类型时,该怎么办呢?

进行增删改操作:

SQL注入问题:用户输入的内容作为了SQL语句语法的一部分,如果用户输入不当,会改变原有SQL的真正意义。

数据准备:

当用户输入的用户名和密码是我们记录的值时,成功登录。否则登录失败。

正常情况下只有输入zhangsan,123456或lisi,888888才能登录成功,但是下面的情况也会登录成功:

我们对sql语句进行拼接:

select * from user where username = ‘eoioei’ and password = 'aaa 'or' 1=1'

' 1=1'永远为真,where永远为真,因此可以登录。在实际开发中这显然是不合理的,如何解决该问题呢?可以使用PrepareStatement

我们在代码中输出一下preparedStatement对象:

可见preparedStatement预处理会自动识别用户的输入内容,如果识别到单引号,会自动对其转义,使其失去单引号的意义。

二、MySQL的pymysql操作

与java一样python也可以与数据库建立连接,这里我们使用pymysql方法来与MySQL数据库建立连接,除此之外python还有很多很多方法与MySQL建立连接。

import pymysql
# 与mysql数据库建立连接
conn = pymysql.connect(host='localhost', port = 3306, user = 'root', password = '123456',database = 'mydb6', charset = 'utf8')
# 建立游标方便后续取数据
cursor = conn.cursor()

sql = 'select * from tb_seller;'
# 执行sql语句返回的结果为影响的行数
row = cursor.execute(sql)

print(row)
print(cursor.fetchone())  # 取一行数据
# 取所有行数据
for i in cursor.fetchall():
    print(i)
# 释放资源
cursor.close()
conn.close()
import pymysql
conn = pymysql.connect(host='localhost',port=3306,user='root',password='123456',database='mydb6',charset='utf8')
cursor = conn.cursor()

# insert
# sql = 'insert into tb_seller values(%s,%s,%s,%s,%s,%s,%s);'
# data = ('tenxun','腾讯科技','马化腾集团','e10adc3949ba59abbe56e057f20f883e','1','北京市','2088-01-01 12:00:00')
# cursor.execute(sql,data)

# updata
# sql = 'update tb_seller set name = %s where sellerid = %s;'
# data = ('腾讯科技有限公司','tenxun')
# cursor.execute(sql,data)
# conn.commit()提交,如果未提交修改不会执行

# delete
sql = 'delete from tb_seller where sellerid = %s;'
data = ('tenxun')
cursor.execute(sql,data)
conn.commit()

cursor.close()
conn.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值