|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 可爱的静静 于 2017-9-1 00:05 编辑
java操作数据库的几个步骤:
1、注册驱动:
Class.forName("驱动程序类名加上包名");
2、建立与数据库的连接,获得Connection对象,其格式:
Connection 对象名=DriverManager.getConnection("url","用户名","密码")
连接SQL Server的url格式:
jdbc:sqlserver://连接的服务器地址:端口号;databasename=数据库名
3、创建命令对象Statement,其格式:
Statement 对象名=Connection对象.createStatement();
4、执行SQL语句,其格式:
插入、删除、更新:
statement对象.executeUpdate(sql语句) 返回int类型表示受影响的行数
5、关闭资源
statement对象.close();
Connection对象.close();
在10.34.61.101的电脑上,SQLServer2008中创建StuMng数据库,建立users表,其字段
id int自动增长
name varchar(50)
email varchar(50)
birthday date
用户名:sa,密码:123456
利用Java程序向该数据库表增加记录
'张三' '123@123.com' '1997-12-2'
- import java.sql.*;
- public class Test {
- public static void main(String[] args) {
-
- try {
- //1、注册驱动
- Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- try {
- //2、建立与数据库的连接
- Connection conn = DriverManager.getConnection("jdbc:sqlserver://10.34.61.101:1433;" +
- "databasename=StuMng","sa","123456");
- //3、创建Statement对象
- Statement stmt = conn.createStatement();
- //4、执行sql语句
- //插入
- //String sql = "insert into users(name,email,birthday) values('张三','123@123.com','1997-9-1')";
- //更新
- //String sql = "update users set name='软件123',email='ls@123.com' where id=1";
- //删除
- String sql = "delete from users where id<5";
- int i = stmt.executeUpdate(sql);
- //System.out.println("插入了" + i + "行");
- //System.out.println("更新了" + i + "行");
- System.out.println("删除了" + i + "行");
- //关闭资源
- stmt.close();
- conn.close();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
复制代码
Java对数据库实现查询:
1、注册驱动:
Class.forName("驱动程序类名加上包名");
2、建立与数据库的连接,获得Connection对象,其格式:
Connection 对象名=DriverManager.getConnection("url","用户名","密码")
连接SQL Server的url格式:
jdbc:sqlserver://连接的服务器地址:端口号;databasename=数据库名
3、创建命令对象Statement,其格式:
Statement 对象名=Connection对象.createStatement();
4、执行查询的sql语句,其格式:
ResultSet 对象名 = Statement对象.executeQuery(sql语句)
ResultSet用于保存JDBC执行查询时返回的结果集,这个结果集封装在一个逻辑表格中
在ResultSet内部有一个指向表格数据行的指针,ResultSet初始化时,这个指针指向表格
的第一行的前面位置
常用方法:
1)、boolean next():用于将指针指向下一行,如果下一行有数据,返回true,否则返回false
while(ResultSet对象.next()) //遍历所有的行
{
}
2)、xxx getXxx(String 字段名) ;获得某行对应的某个字段的值
xxx表示在数据库该字段的数据类型
int i = ResultSet对象.getInt("id")
这里的i获得字段id的值,因为字段id为int类型,所以这里用getInt方法,并且返回int
String n = ResulstSet对象.getString("name")
3)、xxx getXxx(int index):获得某行第index个字段的值
int i = ResultSet对象.getInt(1) //获得某行第1个字段的值
String n = ResultSet对象.getString(2)
4)、close():关闭结果集
5、关闭资源,先创建后关闭
ResultSet对象.close();
Statement对象.close();
Connection对象.close();
- import java.sql.*;
- public class Test {
- public static void main(String[] args) {
-
- try {
- //1、注册驱动
- Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- try {
- //2、建立与数据库的连接
- Connection conn = DriverManager.getConnection("jdbc:sqlserver://10.34.61.101:1433;" +
- "databasename=StuMng","sa","123456");
- //3、创建Statement对象
- Statement stmt = conn.createStatement();
-
- //4、执行查询
- String sql = "select * from users";
- //执行查询后,返回结果集对象
- ResultSet rs = stmt.executeQuery(sql);
- //对结果集进行操作,获得所有行对应的字段值
- while(rs.next())
- {
- //获得指针所指向行对应的字段值
- int i = rs.getInt("id");//获得该行字段名为id的字段值
- String n = rs.getString(2); //获得该行第2个字段的值
- String e = rs.getString("email");
- String b = rs.getString(4);
- //输出
- System.out.println(i + " | " + n + " | " + e + " | " + b);
- }
-
- //5、关闭资源,先创建后关闭
- rs.close();
- stmt.close();
- conn.close();
-
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
复制代码
通过Statement执行Sql语句时,每次执行SQL语句,都会对其进行编译,当相同的SQL语句执行多次,
Statement对象就会对数据库频繁编译相同的SQL语句,会降低数据库的访问效率
为了解决此问题,Statement提供了一个子类PreparedStatement,这个类可以对SQL语句进行
预编译,当相同的SQL语句再次执行时,就不需要对sql语句再次编译,从而提高效率
利用PreparedStatement操作数据库的步骤:
1、注册驱动:
Class.forName("驱动程序类名加上包名");
2、建立与数据库的连接,获得Connection对象,其格式:
Connection 对象名=DriverManager.getConnection("url","用户名","密码")
连接SQL Server的url格式:
jdbc:sqlserver://连接的服务器地址:端口号;databasename=数据库名
3、创建命令对象PreparedStatement,其格式:
PreparedStatement 对象名=Connection对象.prepareStatement(sql语句);
这里的SQl语句中的字段值可以用?代替,成为占位符
String sql = "insert into users(name,email,birthday) values(?,?,'1997-9-1')";
这时还需要对sql语句中占位符赋值
PreparedStatement对象.setXxx(int index,Xxx 值) 表示对第index个占位符赋值
Xxx表示对应的?值的数据类型
PreparedStatement对象.setString(1,"张三");
PreparedStatement对象.setString(2,"123@123.com")
4、执行SQL语句,其格式:
插入、删除、更新:
PreparedStatement对象.executeUpdate() 返回int类型表示受影响的行数
查询
ResultSet 对象名=PreparedStatement对象.executeQuery()
5、关闭资源
ResultSet对象.close();
Preparedstatement对象.close();
Connection对象.close();
- import java.sql.*;
- public class Test {
- public static void main(String[] args) {
-
- try {
- //1、注册驱动
- Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- try {
- //2、建立与数据库的连接
- Connection conn = DriverManager.getConnection("jdbc:sqlserver://10.34.61.101:1433;" +
- "databasename=StuMng","sa","123456");
-
- //3、创建PreparedStatement对象
- String sql = "insert into users(name,email,birthday) values(?,?,'1997-9-1')";
- PreparedStatement pst = conn.prepareStatement(sql);
- //对占位符赋值
- pst.setString(1,"张三");
- pst.setString(2,"123@123.com");
- //4、执行SQL语句
- int i = pst.executeUpdate();
- System.out.println("插入了" + i + "行");
-
- pst.close();
- conn.close();
-
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
复制代码
4、执行sql语句
插入、删除、修改,其格式:
statement对象.executeUpdate(sql语句) 返回受影响的行数int
查询:
statement对象.executeQuery(sql语句) 返回ResultSet对象结果集
while(ResultSet对象.next())
{
ResultSet对象.getXxx()获得某行某字段的值
}
5、关闭资源,先创建后关闭
ResultSet对象.close();
Statement对象.close();
Connection对象.close();
|
评分
-
查看全部评分
|