先学Oracle还是Java,事前学习过的java和Oracle笔记没删除的都带过来
一个client
import java.net.*;
import java.io.*;
public class client {
public static void main(String[] args)throws Exception
{
Socket ss=new Socket("127.0.0.1",6666);
OutputStream os=ss.getOutputStream();
DataOutputStream dos=new DataOutputStream(os);
dos.writeUTF("33333333333333333");
dos.flush();
dos.close();
ss.close();
} }
server
ServerSocket ss=new ServerSocket(6666);
while(true){
Socket s=ss.accept();
DataInputStream dis=new DataInputStream(s.getInputStream());
System.out.println(dis.readUTF());
dis.close();
s.close();
Socket ss=new Socket("127.0.0.1",6666);
OutputStream os=ss.getOutputStream();
DataOutputStream dos=new DataOutputStream(os);
dos.writeUTF("33333333333333333");
dos.flush();
dos.close();
ss.close();
==================================================================================
java连接存储过程
首先 建一张表
book表
create table book (bookId number,bookName varchar2(50) ,publicshHouse varchar2(50));
desc book; 查看表结构--下面那个in可以不写 是默认的in,表示输入参数还有 out表示输出
create or replace procedu sp_pro7(spBookId in number,sp in bookName,
sppublishHouse in varchar2) is
begin
insert into book values(spBookId,spbookName,sppublishHouse);
end;
在java中调用
--###################################################################
package com.sp;
import java.sql.*
//--调用一个没有返回值的过程
public class Test1 {
public static void main(String[] args) {
try {//--加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver"); --下面的MYORA1从服务里面的OracleServerMYORA1得到下面的127.0可以写成localhost,1521是端口
Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:MYORA1","scott","m123");
//--创建CallableStatement
CallableStatement cs=.ct.prepareCall("{call sp_pro7(?,?,?)}");//--几个参数写几个?
//给?付给值
cs.setInt(1,10);
cs.setString(2,"笑傲江湖");
cs.setString(3,"人民出版社");
cs.execute();
} catch (Exception e) {
e.printStackTrace();
}
finally{
//关闭各个资源
}
}
}
--//执行错误 java.lang.ClassNotFoundException错误
驱动没有找到 没有引入jar包
在项目右键 最后一个 java Build Path +Add External JARS
选择classes12.jar
然后okokok;
然后 select * from book;就有记录了
--##############################################################
编写一个 有输入输出的存储过程
create or replace procedure sp_pro8
(spno in number,spName out varchar2) is
begin
select ename into spName from emp where empno=spno;
end;
Class.forName("oracle.jdbc.driver.OracleDriver"); --下面的MYORA1从服务里面的OracleServerMYORA1得到下面的127.0可以写成localhost,1521是端口
Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:MYORA1","scott","m123");
//--看看如何调用返回值的过程
CallablesStatement cs=ct.prepareCall("{call sp_pro8(?,?)}");//--一个输入一个输出
cs.setInt(1,7788);
//第二个注册一个值;
cs.registerOutParameter(2,oracle.jdbc.OracleTypes.VARCHAR);
cs.execute();
//取出返回值
String name=cs.getString(2);
System.out.println("77888name"+name);//--上面也有一个7788
==================================================================================
MYSQL
package mybag;
import java.sql.*;
public class ConnectionManager {
private static final String DRIVER="com.mysql.jdbc.Driver";
private static final String URL="jdbc:mysql://localhost:3306/aa?useUnicode=true&characterEncoding=utf8";
private static final String USERNAME= "root";
private static final String PASSWORD= "wang";
//conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8", "root", "de");
public static Connection getConn(){
Connection conn=null;
try{
Class.forName(DRIVER);
conn=DriverManager.getConnection(URL,USERNAME,PASSWORD);
//System.out.println("数据库连接成功!");
} catch(Exception e){
e.printStackTrace();
}
return conn;
}
public static void closeAll(Connection conn,PreparedStatement ps,ResultSet rs){
try{
if(ps!=null){
ps.close();
ps=null;
}
if(rs!=null){
rs.close();
rs=null;
}
if(conn!=null){
conn.close();
conn=null;
}
} catch(SQLException e){
e.printStackTrace();
}
}
public static void main(String [] args){
Connection conn=null;
conn=ConnectionManager.getConn();
try{
Statement a=conn.createStatement();
ResultSet rs=a.executeQuery("select * from de");
while(rs.next())
{
System.out.println(rs.getInt("id"));
System.out.println(rs.getString("name"));
}
}
catch(Exception e){}
}
}
===================================================================================
注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver:你还可以加上更多的驱动");
建立连接
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/dd","root","wang");
创建语句
Statement st=conn.createStatement();
执行语句
ResultSet re=st.executeQuery("select * from emp");
处理结果
while(rs.next())
{
System.out.println(rs.getObject(1)+"\t"+rs.getString("name")+"\t"+rs.getInt(3));
}
rs.close();
st.close();
conn.close();
st.executeUpdate(insert into user(name,birthday,money) values('wangwu','1988-01-01',100));
上面这句会有一个返回直,你可以 int i=接受 i是改变了多少就是多少
删除的操作和上面的更新是一样
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/dd","root","wang");
创建语句
PreparedStatement ps=conn.PrepareStatement("select * from emp");
执行语句
ResultSet ps=st.executeQuery();
处理结果
while(rs.next())
{
System.out.println(rs.getObject(1)+"\t"+rs.getString("name")+"\t"+rs.getInt(3));
}
rs.close();
st.close();
conn.close();
==============================================================
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/dd","root","wang");
创建语句
String sql="select id,name from user where name=?";
PreparedStatement ps=conn.PrepareStatement(sql);
ps.setString(1,"wangwu");
执行语句
ResultSet ps=st.executeQuery();
处理结果
while(rs.next())
{
System.out.println(rs.getObject(1)+"\t"+rs.getString("name")+"\t"+rs.getInt(3));
}
rs.close();
st.close();
conn.close();
==========================================================
long start=System.currentTimeMillis();
一些代码
long end=System.currentTimeMillis();
System.out.println("read"+(end-start));
==================================================================================
java连接存储过程
有返回值的存储过程(列表【结果集】)
案例:编写一个过程,输入部门号,返回该部门所有的雇员信息。对该题分析如下:
由于oracle存储过程没有返回值,他的所有返回值都是通过out参数来替代的,列表同样也不例外,但是由于是集合,所以不能用一般的参数,必须用药用pagkage,所以分两部分
一:建立一个包 ,在包中定义一个类型test_cursor
create or replace package tespackage as
TYPE test_cursor is ref cursor;--名字叫做test的游标,标准时ref cursor
end tespackage;--同上面
二,创建过程
create or replace procedure sp_pro9(spNo in number,p_cursor out tespackage.test_cursor)
is
begin
open p_cursor for select * from emp where deptno=spNo;
end;
三 在java调用
创建CallableStatement
CallableStatement cs=ct.prepareCall("{call sp_pro9(?,?)}");
cs.setInt(1,10);
//注册
cs.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
cs.execute();
//关键
//得到结果集
ResultSet rs=(ResultSet)cs.getObject(2);
while(rs.next()){
System.out.println(rs.getInt(1)+""+rs.getString(2));
}
===================================================================================
过程
编写一个过程,可以输入雇员名字,如果雇员的工资低于 2000 就给雇员工资增加白分之十
create or replace procedure sp_pro6(spName varchar2)--这里不能写成varchar2(10)
--定义
v_sal emp.sal%type
begin
select sal into v_sal from emp where ename=spName;
--执行
--判断
if v_sal<2000 then
update emp set=set*1.1 where ename=spName
end if;
end;
select * from emp;
exec/call sp_pro6('SCOTT');
select * from emp; --发现 SCOTT工资变化了
还有 二重条件分支 if-then-else
--编写一个过程,可以输入雇员名字,如果雇员的补助不是0就在原来的基础上增加100,如果为0,就把补助设置为200
create or replace procedure sp_pro6(spName varchar2)--这里不能写成varchar2(10)
--定义
v_comm emp.xomm%type
begin
select comm into v_comm from emp where ename=spName;
--执行
--判断
if v_comm<>0 then --不能!=
update emp set comm=comm+100 where ename=spName;
else
update emp set comm=comm+200 where ename=spName;
end if;
end;
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
编写一个过程,可以输入一个雇员的编号,如果这个雇员的职位是 ??就给他的工资增加1000如果这个
职员是??就给他的工资增加500,其他的工资增加200
create or replace procedure sp_proc6(spNo number) is
v_job emo.job%type;
begin
select job int v_job from emp where empno=spNo;
if v_job='PREDIENT' then
update emp set sal=sal+10000 where empno=spNo;
elsif v_job='MAX' then --记住着这个写法elsif
update emp set sal=sal+500 where empno=spNo;
else
update emp set sal=sal+200 where empno=spNo;
end if; --有空格
end;
--执行
exec/call sp_proc6(7839);
--%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--编写一个过程,输入用户名字,并且循环填加10个用户 到users表 用户编号从1开始
create or replace procedure sp_proc6(spName varchar2) is
v_num number:=1;
begin
loop
insert into users1 values(v_name,spName);
exit when v_num=10
v_num:=v_num+1;
end loop;
end;
--发生错误,没有表
create tables users1(userNO number,userName varchar2(40));
--现在好了
desc user1--看看表的结构 不是内容
执行 exec sp_proc6('你好');
--##############################################################################
编写一个过程 ,可以输入拥护名字 并且 填加10个拥护到users表
拥护编号从11开始
create or replace procedure sp_proc6(spName varchar2) is
v_num number:=11;--改这里
begin
while v_num<=200 loop
insert into users1 values(v_name,spName);
v_num:=v_num+1;
end loop;
end;
=============================================================================
一个 简单的goto
declare
i int :=1; --定义一个int 的变量1
begin
loop
dbms_out.put_line('输出'||i); --输出一句话
if i=10 then
goto end_loop; --跳转到下面的 <>
end if;
i:=i+1;
end loop;
<>
dbms_out.put_line('循环结束');
end;
如果没有执行是 因为这个开关没有打开
set serveroutput on; 现在执行就有效果
--#####################
if 条件 then
执行;
else
null;
================================================================================
mysql java
Class.forname("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/aa","root","wang");
Statement st=conn.createStatement();
ResultSet re=st.executeQuery("select * from de");
while(re.next()){
System.out.println(re.getInt("id"));
System.out.println(re.getString(2));
}
=================================================================================
约束 五种: not null 不能为空
unique 唯一约束
primary 主键=不能重复且不能为空
foreign key 外键
check
单列索引
create index nameIndex on customer(name);
符合索引
====================================================================================
package cm.a;
public class a {
static{
new c("555");
new c("444").ju();
}
public static void main(String[] args) {
System.out.println(new b(){
public intprint(){
System.out.println("hhhhhhhhhh");
return 4;
};public void b(){};
}.print());
System.out.println("++++++++++++++");
}
}
interface b{
void b();
public int print() ;
}
class c implements b{
String a;
public c(){};
public c(String a){
this.a=a;
}
public String ju()
{
return a;
}
public int print(){
System.out.println("ssssssssssssssssss");
return 777;
};public void b(){};
}
先学Oracle还是Java,事前学习过的java和Oracle笔记没删除的都带过来相关推荐
- 莆田Java开发_莆田学java编程,莆田java编程学习学校,莆田java编程学习一般能拿多少工资...
莆田学java编程,莆田java编程学习学校,莆田java编程学习一般能拿多少工资 首页 > java > 莆田学java编程 作者:镀金池 发布时间:2017-10-18 06:51 ...
- JAVA技术交流(学习群):51194570;JAVA技术交流(应用群):51194804
JAVA技术交流(学习群):51194570;--Java技术学习交流平台 JAVA技术交流(应用群):51194804 --专注Java EE技术研究与应用 有兴趣的朋友+
- java基础学安卓开发_Android开发学习路线之Java基础学习
原标题:Android开发学习路线之Java基础学习 很多Android学习开发者刚入手Android开发技术时,稍微有点迫切.任何的开发技术都有其基础语言,Android应用程序开发是以Java语言 ...
- 【Java新人学习指南】Java基础知识点大梳理
各位正在认真苦学Java的准大神,在这烈日炎炎的夏季里,在这里准备给大家带来一个超级大的"冰镇西瓜,"给大家清凉一下,压压惊.但这个大西瓜可不是一般的大西瓜,是Java大神学习秘诀 ...
- java入门学习总结——【java菜鸟成长记】
引言 经过一周左右的时间学习完了java的入门知识--j2se视频教程,小编也是算是进入java领域的一个小菜鸟了, 从很早就知道java这行的水很深,从就业方面来看也大多是java高级工程师, ...
- java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)
最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会 直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有"01 ...
- 学习java后端路线心得_我最推荐的一张Java后端学习路线图,Java工程师必备
# 阿里面经 [阿里中间件研发面经](http://mp.weixin.qq.com/s?__biz=MzUyMDc5MTYxNA==&mid=2247483852&idx=1& ...
- Java编程学习入门、Java语言学习、Java入门必看
一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...
- JAVA开发学习——欢迎来到JAVA开发世界!
java概述 Java是第一门完全面向对象编程的计算机语言 作者:詹姆斯·高斯林(James Gosling) 三大平台版本 J2SE(Java 2 Platform Standard Edition ...
最新文章
- 「尖峰对话」问题征集:向张宏江和John Hopcroft 近距离提问
- jetspeed 安装及数据库配置
- Hadoop-2.8.5的HA集群搭建
- html表单验证js代码,JavaScript表单验证实现代码
- 第2章 Python 数字图像处理(DIP) --数字图像基础3 - 图像内插 - 最近邻内插 - 双线性插值 - 双三次内插 - 图像放大
- javaBean【02】javaBean与表单应用
- 用了vscode和clion我都裂开了
- MySQL 输入任何语句都提示You must reset your password using ALTER USER 解决方法
- 树莓派安装mysql并设置远程访问
- JAVA 遍历文件夹下的所有文件
- html元数据是什么意思,HTML meta 元数据标签
- 判断字符是否包含有特殊字符
- zotero 相关文章链接 (侵权请联系,立即删除)
- 无公式无数学内容下,如何理解加密与解密知识?
- 解决ueditor百度富文本编辑器图片可以上传但是在线管理图片无法显示
- Windows分布式协调器
- python报错Statements must be separated by newlines or semicolons解决方法
- Java之Base64
- 00002__失恋卖茶女
- NVIDIA安装程序失败(组件全部未安装)
热门文章
- React 入门学习笔记2
- jquery级试题_JS-jQuery练习题面试题
- Java并发编程之堵塞队列介绍以及SkipList(跳表)
- esp32 嵌入式linux,初体验乐鑫 ESP32 AT 指令-嵌入式系统-与非网
- 联想m7400pro清零方法_联想打印机怎么清零 联想打印机清零方法【教程】
- intention lock_写作技巧:你写出来的情节有用吗?好情节的原则——LOCK系统
- php sql跳过前四条数据,mysql实现每组取前N条记录的sql,以及后续的组数据量限制...
- isinstance_Java类class isInstance()方法及示例
- Java System类runFinalization()方法及示例
- stl向量_如何检查C ++ STL中向量中是否存在元素?