一.数据库和SqlServer
数据库保存数据仓库,SqlServer是一个应用程序,用来管理数据库,那我们能不能用java程序操作数据库呢
Java程序要访问数据库,那相当于一个城市要与另外一个城市联系一样,那么首先是不事先要了解下那个城市的一些文化或者风土人情。然后在两个城市建立连接,开辟一条河流,那开辟河流就要知道要连接的那个城市的地址,和开河规则,建立一条河流以后,就要准备一艘船,然后运送些东西过去与那边那个城市交易,然后有去有回,那么交易完了以后应该返回一些东西回来,然后把船关闭,再把河流关闭,这次交易结束.
注意:打开Tcp/IP协议,重启Server的服务,在“我的电脑”---->“管理”
二.Java程序要访问数据库,要知道数据库的一些信息,那就是sqlServer的驱动包sqljdbc.jar,在这个sqljdbc.jar包里记录所有数据库的信息
(增加)
第一步加载驱动包sqlServer,加载驱动类,了解数据库
//加载驱动类
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
第二步建河,得到Connection对象
//DriverManager是负责驱动管理器,它能建条河
//那么建河要知道建河的规则,和这条河连到哪里去
//jdbc所有数据库的协议,sqlserver单指sqlserver数据库的协议,这样就知道开河的规则
//127.0.0.1是指数据库在哪里,1433哪个端口进去,databasename具体找哪个数据库
Connection conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databasename=data", "sa", "123456");
第三步,准备运送的东西,sql语句
String sql = "insert into users values('kenty','123456',1000)";
第四步,准备船送东西,创建Statement
//创建一条船
Statement stmt = conn.createStatement();
第五步,装船出发(在sqlServer上执行一次,有去有回),交易完了,返回影响的行数
int l = stmt.executeUpdate(sql);
第六步,关船,关河 stmt.close(); conn.close();
(删除)
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databasename=data", "sa","123456");
String sql = "delete from users where id=4";
Statement stmt = conn.createStatement();
int l = stmt.executeUpdate(sql);
System.out.println(l);
stmt.close();
conn.close();
(修改)
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databasename=data", "sa","123456");
String sql = "update users set money=money+500 where id = 1";
Statement stmt = conn.createStatement();
int l = stmt.executeUpdate(sql);
System.out.println(l);
stmt.close();
conn.close();
(查询)
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databasename=data", "sa","123456");
String sql = "select * from users";
在数据库中select * from users是返回一个表,多条数据,那么在java程序当中就是返回一个数据的集合(数据集)ResultSet
ResultSet rs = stmt.executeQuery(sql);
rs.next()就是看下一个有没有,如果有就拿出数据,那么可以使用一个循环
拿出数据可以采取两种方法,根据列标和列名
int id1 = rs.getInt(1); id属性是在数据库中是int类型的,列标为1,列名为id
int id2 = rs.getInt("id");
String n1 = rs.getString(2); name属性是在数据库中是varchar(50)类型的,列标为2,列名为name
String n2 = rs.getString("name");
。。。。
实例:
Scanner input=new Scanner(System.in);
System.out.println("请输入你的名字!");
String name=input.next();
System.out.println("请输入你的密码!");
int pwd=input.nextInt();
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databasename=test","sa","123");
Statement stm=con.createStatement();
String sql="select * from users where username='"+name+"' and userpwd="+pwd;
ResultSet rs=stm.executeQuery(sql);
if(rs.next()){
System.out.println("成功");
}else{
System.out.println("不成功");
}
使用; odbc 连接数据库
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection("jdbc:odbc:test","sa","123");
概念:
Jdbc: 数据库访问技术
程序---------------------------------------数据库
Java : jdbc
C# ado
数据库种类非常多,每种数据库有各自的特点和实现,程序连接不同的数据库就像是和不同国家种族甚至星球的人交谈
那么在Java之前,如果程序访问数据库,那么需要程序员自己亲手编写连接访问的细节(包括根据要连接的数据库特性进行特殊处理,以及翻译和编码数据库所识别的信息)
而Java中提出JDBC的概念,解放了我们程序员需要进行细节底层操作的问题,可以让我们将更多的注意力放在数据操作上面
JDBC是Sun公司提供的一套数据库访问标准接口,这些接口规范的具体实现由数据库的生产厂商或是第三方组织来实现
数据库厂商或第三方实现的这套东西我们称为驱动包
ODBC桥驱动
访问 连接
Java程序-----------ODBC数据源-------------->数据库
自带了驱动(常用)
JDBC纯驱动
直接连接和访问
Java程序----------------------------------->数据库
自备驱动
连接访问数据库的基本步骤:
1.加载驱动类,告诉Java要连接的是啥玩意
Class.forName("驱动类全称");
ODBC的驱动类:sun.jdbc.odbc.JdbcOdbcDriver
JDBC连接 SQLServer2005的驱动类:com.microsoft.sqlserver.jdbc.SQLServerDriver
2.指定具体的连接资源路径
ODBC的资源路径配置: jdbc:odbc:数据源名称
JDBC连接 SQLServer2005的资源路径配置
jdbc:sqlserver://地址:端口;databasename=数据库名称
3.通过DriverManager的getConnection方法获得具体Connection连接对象
Connection con=DriverManager.getConnection(url,loginName,pass);
================连接建立完毕==============================
4.制定要执行的SQL语句
5.从当前的连接对象中通过createStatement获得用于发送SQL语句的操作句柄
Statement sta=con.createStatement();
6.通过Statement发送和执行SQL语句
如果是执行增,删,改,那么使用executeUpdate方法,并且同时将要执行的SQL语句作为参数传递进去,返回影响的行数
如果是查询,那么使用executeQuery方法,返回保存结果表的ResultSet对象
7.关闭相关资源
只要和数据库打交道的东西都要关闭,不仅仅是Connection,并且要遵从先开后关的原则