先学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(){};

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在电脑搭建oracle服务器端,oracle 服务器端搭建(C#开发环境)

oracle 服务器端搭建(C#开发环境)oracle 服务器端搭建(C#开发环境)常见问题&#xff1a;问&#xff1a;安装plsql 能直接 连接 oracle 服务器端吗&#xff1f;答&#xff1a;32可以直接连接&#xff0c;但是64为需要配置问&#xff1a;下载plsql 对于的版本的选择 是选择64位好…

【网络奇遇记】揭秘计算机网络的性能指标:速率|带宽|吞吐量|时延

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 速率1.1 数据量1.2 速率 二. 带宽三. 吞吐量四. 时延4.1 发送时延4.2 传播时延…

Oracle导入ixf文件,Shell读取文本批量导出\导入DB2数据

需求背景&#xff1a;由于DB2 exp\imp数据只能一张表一张表的exp\imp所以通过把所有的表都写在一个exp_imp_db2.txt文件中exp_imp_db2.txt格式如下&#xff1a;(i|e) schema_name table_name src_name ---iimport ;eexportexp_imp_db2.sh#!/bin/shdb2 connect to…

oracle tsn 数据库,【Oracle数据库恢复】ORA-00600[25027]错误解析

ORA-00600[25027]错误的触发原因是ORACLE检测到一个无效的表空间号TSN Tablespace Number或者相对文件号Relative File Number。该ORA-00600[25027]的2个变量各代表&#xff1a;arg[a] Tablespace Number表空间号arg[b] 十进制的相对数据块号Relative Data Block Address (RDBA…

怎么查看ip地址下的php文件夹,pe下查看原系统ip的方法

pe下查看原系统ip的方法方法及步骤如下&#xff1a;在PE下加载注册表&#xff0c;找到[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces]&#xff0c;在“Interfaces”选项下面可以看到有多个注册表子项&#xff0c;依照不同子项下面的“IP…

如下为利用Linux内核链表创建,Linux内核中链表的实现与应用

链表(循环双向链表)是Linux内核中最简单、最常用的一种数据结构。1、链表的定义struct list_head {struct list_head *next, *prev;}这个不含数据域的链表,可以嵌入到任何数据结构中,例如可按如下方式定义含有数据域的链表&#xff1a;struct my_list {void * mydata;struct l…

linux共享内存示例,linux 进程间共享内存示例

写入端&#xff1a;#include #include #include #include #include using namespace std;struct MappingDataType {int mappingData;};bool SetUsedPID(string mappingName){void *shm NULL;MappingDataType *shared;int shmid shmget((key_t), sizeof(MappingDataType), |IP…

Linux使用cmake编译项目,如何使用cmake在linux中构建Qt项目(How to build Qt project in linux with cmake)...

如何使用cmake在linux中构建Qt项目(How to build Qt project in linux with cmake)我使用的是ubuntu 14.04&#xff0c;cmake 2.8.12.2&#xff0c;Qt5.6.2(内置版本)&#xff0c;GNU make 3.81用cmake PathToSource -G "Eclipse CDT4 - Unix Makefiles"运行cmake之后…

linux cmake 编译项目,使用CMake构建复杂工程

0. 什么是CMakeCMake是一个跨平台的编译、安装、测试以及打包工具&#xff1b;CMake不直接编译软件&#xff0c;而是结合原生构建系统来构建软件。CMake配置文件是CMakeList.txt文件(每个源码文件夹下都要有一个)&#xff0c;CMake根据配置文件在生成Unix的Makefile或VS的solut…

Linux防火墙屏蔽ip6,观点|Linux 发行版们应该禁用 IPv4 映射的 IPv6 地址吗?

从各方面来看&#xff0c;互联网向 IPv6 的过渡是件很缓慢的事情。不过在最近几年&#xff0c;可能是由于 IPv4 地址资源的枯竭&#xff0c;IPv6 的使用处于上升态势。相应的&#xff0c;开发者也有兴趣确保软件能在 IPv4 和 IPv6 下工作。但是&#xff0c;正如近期 OpenBSD 邮…

linux db2 权限管理,DB2五种管理权限

DB2五种管理权限SYSADM, SYSCTRL SYSMAINT DBADM and LOAD前三个权限是instance-level&#xff0c;and can only be assigned to a group and are done so through the Database Manager Configuration file.后两个权限是database-level,are assigned to a user or group for …

boost 线程 linux,Boost Linux线程第一课

#include#includevoid ThreadFunc(){std::cout<}int main(){boost::thread thrd1(&ThreadFunc);thrd1.join();return 0;}编译指令 g test.cpp -lboost_thread注意&#xff1a;没有链接boost_thread&#xff0c;出错提示如下&#xff1a;undefined reference to boo…

linux 链接文件 通配符,linux globbing文件通配符

在linux中使用ls、cp、mv、rm等命令时可以使用文件通配符匹配操作多个文件。匹配模式*&#xff1a;匹配任意长度的任意字符?&#xff1a;匹配任意单个字符[]&#xff1a;匹配指定范围内的任意单个字符(文件通配不区分字母的大小写)[^]&#xff1a;匹配非制定范围内的任意单个字…

linux 升级centos7,Linux之从Centos 6.x 升级Centos7

1、安装升级工具依赖的软件包yum -y install openscap pcre-devel libxml2-devel libxslt-devel m2crypto python-simplejson mod_wsgi2、安装以下软件的最新版&#xff0c;可以到这里查找&#xff1a;http://dev.centos.org/centos/6/upg/x86_64/Packagesrpm -ihv http://dev.…

linux和pe修复win10启动项,pe下如何重建win10引导?pe下win10引导修复图文教程

[文章导读] 随着win10系统的流行&#xff0c;越来越多的小伙伴经常遇到win10系统引导丢失的情况&#xff0c;我们知道win10系统现在采用的是uefi引导&#xff0c;以前的一些修复工具都只能修复传统模式mbr格式下的硬引导&#xff0c;但对于uefi引导不是很清楚&#xff0c;uefi引…

linux下实现定时器,在Linux操作系统下实现定时器简介

在Linux实现一个定时器&#xff0c;不像Win32下那样直观。在Win32调用SetTimer就行了&#xff0c;在Linux下则没有相应函数可以直接调用。定时器作为一个常用的功能&#xff0c;在Linux当然也有相应实现。下面我们看看几种常用的方法。要实现定时器功能&#xff0c;最土的办法实…

c语言课程设计大作业模版,c语言课程设计报告模板下载

c语言课程设计报告模板是一款专业的设计模板&#xff0c;对于在大学有需要些设计报告的朋友&#xff0c;可以下载这款模板作为参考&#xff0c;了解设计报告的需求&#xff0c;基本上毕业的论文设计也是在这个基础上严格要求的&#xff0c;欢迎下载使用。C语言介绍C语言是一门面…

c语言error和,C语言ERROR精选.doc

C语言ERROR精选Ambiguous operators need parentheses ) ~. [1 L: f& a/ J不明确的运算需要用括号括起 # n5 J! G c( m: ! o& \( P. CAmbiguous symbol xxx - n# d??i/ t0 K8 M不明确的符号 6 r% o0 \- N! _2 UArgument list syntax error % l, j/ O9 \; x1 j1 e参数…

c语言如何把变量按位颠倒,求答案,用C语言编程,用户输入一个正整数,把他的各位数字前后颠倒,并输入点到后的结果...

满意答案q15173278975推荐于 2017.11.26采纳率&#xff1a;58% 等级&#xff1a;13已帮助&#xff1a;5665人用字符串处理很简单#include #include void main (){int n,i;char s[20];scanf("%d", &n);sprintf(s,"%d", n);printf("%d\n",s…

中南大学12月13日考c语言,中南大学2010级C语言试卷

中南大学考试试卷2010 -- 2011 学年 1 学期 时间110分钟学时学分 考试形式&#xff1a;班级 学号 姓名 总分100分,占总评成绩70 %一、选择题(每小题1.5分,共计30分)1. C语言中变量定义与使用的关系是 。A) 必须先定义&#xff0c;后使用 B)可以先使用&#xff0c;后定义 C) 可以…