西安做网站seo,网站风格和功能设计方案,万维网包括哪些网站,长沙服务好的网络营销JDBC JDBC (Java DataBase Connectivityjava数 据库连接)是一种用于执行SQL语句的Java API。 JDBC是Java访问数据库的标准规范#xff0c;可以为不同的关系型数据库提供统一访问#xff0c; 它由一组用Java语言编写的接口和类组成。 JDBC需要连接驱动#xff0c;驱动是两个设…JDBC JDBC (Java DataBase Connectivityjava数 据库连接)是一种用于执行SQL语句的Java API。 JDBC是Java访问数据库的标准规范可以为不同的关系型数据库提供统一访问 它由一组用Java语言编写的接口和类组成。 JDBC需要连接驱动驱动是两个设备要进行通信满足一定通信数据格式数据格式由设备提供商规定设备提供商为设备提供驱动软件通过软件可以与该设备进行通信。
JDBC核心类和接口 DriverManager用于注册驱动 Connection表示与数据库创建的连接 Statement/PrepareStatement操作数据库sql语句的对象 ResultSet结果集或一张虚拟表 需要先下载导入架构包 执行流程
1注册驱动 DriverManager.registerDriver (驱动);
2建立与数据库服务器的连接 DriverManager.getConnection(ip ,端口 ,数据库 ,用户名 ,密码);
3将sql指令发送给服务器执行 Statement / Preparedstatement executeUpdate () / executeQuery () Statement是初级的Preparedstatement是较为高级的。executeUpdate () 执行增删该executeQuery ()执行查询。
4处理服务器返回的结果 1返回行数rows 2返回一张表(结果集) ResultSet
5释放资源 close();
public class JdbcDemo {public static void main (String[] args) throws Exception {//使用JDBC规范采用都是java.sql包下的内容//1 注册驱动DriverManager.registerDriver(new com.mysql.jabc.Drive());//可以省略因为内部已经设置好了。//2 获得连接Connection connection DriverManager.getConnection(jdbc:mysql://localhost:3306/myDatabaseroot,123456);//3 执行SQL语句Statement statement connection.createStatement();ResultSet resultSet statement.executeQuery(select name ,id from table);//查询数据int rows statement.executeLargeUpdate(insert into table values(3, Name3));//添加数据返回值是影响了几行数据。引号中的SQL语句还可以是增删改的语句。//4 处理结果while (resultSet.next()){int id resultSet.getInt(id);String name resultSet.getString(name);System.out.println(id name);//列名也可以换成数字从1开始。}//5 关闭连接resultSet.close();statement.close();connection.close();}
} 结果集优化
获取表的列数
ResultSetMetaData resultSetMetaData resultSet.getMetaData();int coLumnCount resultSetMetaData.getCoLumnCount();
处理结果便可用下列方式
while (resultSet.next()){for(int i 1; i coLumnCount; i){System.out.print(resultSet.getObject(i) \t);}System.out.println();Connection conn DriverManager.getConnection(jdbc:mysql://localhost:3306/myDatabaseroot,123456);
} SQL注入 用户输入的内容作为了SQL语句语法的一部分改变了原有SQL真正的意义。 示例
public static void main(String[] args) throws SQLException {//用户输入用户名和密码判断是否能够登录Scanner scanner new Scanner(System.in);System.out.printLn(请输入用户名:);String username scanner.nextLine();System.out.print1n(请输入密码:);String password scanner.nextLine();Statement statement connection.createStatement();String sql select * from user where username username and password password ;ResultSet resultSet statement.executeQuery(sql);if(resultSet.next()){System.out.println(登录成功!);}else{System.out.println(登录失败!);}//当用户收益输入账号或密码时有可能会造成SQL注入。
不用createStatement可以解决上列问题用connection.prepareStatement()进行预处理即可。
public static void main(String[] args) throws SQLException {Scanner scanner new Scanner(System.in);System.out.printLn(请输入用户名:);String username scanner.nextLine();System.out.print1n(请输入密码:);String password scanner.nextLine();String sql select * from user where username ? and password ?;PreparedStatement preparedStatement connection.prepareStatement(sql);preparedStatement.setObject(1, username);//设置第一个问号是usernamepreparedStatement.setObject(2, password);//设置第一个问号是passwordResuLtSet resultSet preparedStatement.executeQuery();if(resultSet.next()){System.out.println(登录成功!);}else{System.out.println(登录失败!);} pymysql PyMySQL是一个纯Python实现的MySQL客户端库支持兼容Python3用于代替MySQLdb。 以管理员身份打开命令行窗口输入pip install PyMySQL可以下载qymysql
查询操作
# 导入模块
import pymysql#获取MySQL连接
conn pymysql.connect(host localhost, port 3306; user root, password 123456, database myDatabase, charsetutf8)# 获取游标
cursor conn.cursor()# 执行SQL语句 返回值就是SQL语句在执行过程中影响的行数
sqL select * from student;
row_count cursor.execute (sql)
print(SQL语句执行影响的行数%d %row_count)# 取出结果集中一行 返回的结果是一行
# print(cursor.fetchone())# 取出结果集中的所有数据 返回一行数据
for line in cursor.fetchall():print(line)# 关闭游标
cursor.close()# 关闭连接
conn.close()
增删改操作
import pymysql
conn pymysql.connect(host localhost, port 3306; user root, password 123456, database myDatabase, charsetutf8)
cursor conn. cursor()# 插入数据
# sql insert into student values(%s, %S, %S)
# data (4, 晁盖, 34)
# cursor.execute(sql, data) #sql和data之间以,隔开# 修改数据
# sql update student set sname %s where sid %s
# data (李道4)
# cursor.execute(sql, data)# 删除数据
# sql delete from student where sid %s
# data (4)
# cursor.execute(sql, data)conn.commit() # 提交不然无法保存插入或者修改的数据!!!cursor.close()
conn.close()