4.java高级之JDBC和SOCKET

1.build path构建路径,按包名成为路径

2.jdbc的代码

 
    //注册驱动,按类名去lib找文件,然后加载到jvm中/当前类中,所以就可以使用DriverManager了,可是为什么要用这一句呢?,我之前导入jar包都可以使用里面的类的.原来DriverManager不是jdbc的类
   //jdk1.6必须要写, jdk1.6以后更新为jdbc4不需要手动加载类文件,则也就是我经常看到为什么jar包,as lib或者build path就可以用的原因
   Class.forName("com.mysql.jdbc.Driver");
   //避免查询条件有中文
   conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/stu?useUnicode=true&characterEncoding=utf-8","root","1234");
   Statement stmt=conn.createStatement();
   ResultSet rs=stmt.executeQuery("select * from student");
    //这里不能插入,不然后面报rs错误,结果已经被改变,更新不会
   int i = stat.executeUpdate("update dept set dname='aa' where deptno=8");
   while(rs.next()){
                  rs.getInt("id");
                   rs.getString("name");
                   rs.getInt(1);//也可以是列号得到数据
   }

3.动态SQL语句 PreparedStatement接口 预编译用占位符?代表要替代的数据

  1. 好处
    1. 简化代码,便于sql书写
    2. 防止sql注入攻击
    3. 提高java操作数据库预编译效率(在java编译,不用在数据库编译)

  2. 代码 必须每用一次写一个sql语句,不能共用一个ps对象

   String sql="select * from id=? and school =?"; 
    PreparedStatement ps=connection.prepareStatement(sql);            
    ps.setInt(1,"1");//都是字符串,也可以和类型一样
    ps.setString(2,"ngs");
    ps.execute();

3.socket网络编程

  1. c/s client/server(主从结构) 服务器一直处于等待状态(监视)客户端发请求
    1个服务器对应多个客户端

  2. p2p 对等网络

  3. 网络协议
    1. ip 不能保证数据的顺序 保证目的地
    ----1. 127.0.0.1回送地址,送回给本机处理
    ----2. 主机名称hostname www.baidu.com dns(domain name server)服务器把它转ip
    ----3. 端口 ip地址是主机.端口是他的进程pid 16位数字 [0,65535] 小于1024端口给系统运行
    2. tcp 数据安全的可靠的,保证数据顺序
    3.upd 数据不可靠但是也有应用场景,比如短视频,掉帧没有关系

  4. InetAddress类 处理ip地址和主机名字
    InetAddress addr=InetAddress.getByName(“www.baidu.com”); //可以得到主机名和ip地址(通过域名)
    好用
    adr=InetAddress.getLocalHost();//得到本地主机名字
    sout(adr);//得到 主机名称/IP地址
    sout(adr.getHostAddress())//地址 getHostName() ip的主机名

4.socket代码 服务器socket与客户端socket一次通信就是一次握手(它们的ip相反过来本机和远程主机)(建议先编写完整的一边,再编写另外一边)
1.ServerSocket(服务器里写端口) 和Socket(客户端里写服务器ip和端口,套接字)

ServerSocket ssk=new ServerSocket(2530);//本机的2530作为服务器端口
        Socket sk=sk.accept()//监视客户端的请求.,一直阻塞等待.成功连接才得到Socket是连接客户端的对象
     //输入流接收数据,输出流发出数据
      s.getInputStream();//得到输入流    输出<---|    |<--输入
     OutputStream out=s.getOutputStream();
     out.write("hello".getBytes()); //字节输入流
      out.close();
       s.close(); 
  
                
 //客户端写,不用监听得到对象
       Socket s=new Socket("127.0.0.1",2530);//服务器端的ip地址
        byte []buff=new byte[1024];
       InputStream in=s.getInputStream();      
          int n=in.read(buff);//返回处理长度
            sout(new String(buff,0,n))
    
        OutputStream out=s.getOutputStream();  

5.简化(while和继承线程,每个线程都是一个socket)

  run():
           while(this.isAlive()){ //线程活着


         }
   Server:
        while(true){ //一直运行服务器
               Socket s=new Socket("127.0.0.1",2530);
                OutputStream out=s1.getOutputStream();
                 DataOutStream data=new DataOutStream(out);
                  data.writeUTF("hello");
                    s1.close();
       }
   Client:
                 InputStream in= s;
                DataInStream data=new DataInStream(in);
                    String msg=data.readUTF();

   s.close();

6.UDP通信数据报通信 传递信息速度更快,但没有TCP可靠,很多场合不需要全部全部到达目的,视频直播
TCP transport control protocol
//会把数据打包,发送,报文,服务端和客户端用同一个对象

public class udpServer {
    public static void main(String[] args) throws IOException {
        DatagramSocket socket=new DatagramSocket(12345);
        //创建一个InetAddree,自己测试的时候要设置成自己的IP地址
        InetAddress serverAddress=InetAddress.getByName("127.0.0.1");

        byte buf[]=new byte[1024];



        //创建一个 DatagramPacket 对象,并指定要将这个数据包发送到网络当中的哪个地址以及端口号
        DatagramPacket packet=new DatagramPacket (buf,buf.length,serverAddress,12345);
        //调用 socket 对象的 send 方法,发送数据
        socket.receive(packet);
        byte[] data = packet.getData();
        System.out.println(new String(data));


    }
}

//客户端

        public class UDPClient {
    public static void main(String[] args) throws IOException {
        try
        {
            DatagramSocket socket=new DatagramSocket(12344);
            //创建一个InetAddree,自己测试的时候要设置成自己的IP地址
            InetAddress serverAddress=InetAddress.getByName("127.0.0.1");

                String str="Hi, this is the string from the Android Client!";
                byte buf[]=new byte[1024];
               buf="你好".getBytes();


                //创建一个 DatagramPacket 对象,并指定要将这个数据包发送到网络当中的哪个地址以及端口号
                DatagramPacket packet=new DatagramPacket (buf,buf.length,serverAddress,12345);
                //调用 socket 对象的 send 方法,发送数据
                socket.send (packet);
                Thread.sleep(1000);




        }
        catch(SocketException e)
        {}catch(UnknownHostException e){}catch(IOException e){}catch(InterruptedException e){}



    }
}

7.URL编程 universal resource locator网络资源定位器
http://www.baidu.com:80 //有协议,域名/ip 端口
url= new URL(" http://www.baidu.com:80 ");
u.getProtocol();//得到协议
u.getPort();//得到端口
u.getHost();//指定主机名

      u.getFile();//得到文件名
   //读到网络文本文件和 ...
       Object obj=u.getContent();
      =new InputStreamReader((InputStream)obj);
   //记录连接得到具体连接地址的信息
      uc1=u1.openConnection();
              uc1.getContentLength();
  //例子
public class URIDemo2 {
    public static void main(String[] args) throws IOException {

        try{
            URL url = new URL("file:/d:\\1.txt"); //注意
            Object content = url.getContent();

            BufferedReader reader = new BufferedReader(new InputStreamReader((InputStream) content));
            String str="";
            while ((str=reader.readLine())!=null){
                System.out.println(str);
            }
        }catch (Exception e){


        }


    }
}
public class URLDemo {
    public static void main(String[] args) throws  MalformedURLException {
        URL url = new URL("https://www.baidu.com/");
		 URLConnection urlConnection = url.openConnection();
        
        System.out.println("文件名"+url.getFile());
        System.out.println("主机名"+url.getHost());
        System.out.println("端口号"+url.getPort());
        System.out.println("端口号"+url.getProtocol());
        Object content = null;
        try {
            content = url.getContent();

            BufferedReader reader = new BufferedReader(new InputStreamReader((InputStream) content));
            String str="";
            while ((str=reader.readLine())!=null){
                System.out.println(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }



    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值