资讯详情

Android课设简单实现远程数据库操作——图书管理的增删改查。

一,简介

要实现Android端对数据库的远程操作由三部分组成:Android端、服务器端和数据库。Android端发送操作请求,服务器端响应Android端的操作请求,连接部署的数据库,并发送操作命令语句,再返回操作结果;服务器端发送操作结果返回Android端,Android根据服务器端返回的数据判断,端显示相应的提示。

二,过程

建立服务器端

(1)创建数据库连接类DBConnection(连接数据库要引入数据库对应的jdbc的jar因为我用的是包sqlserver所以我介绍了2008年的数据库sqljdbc4.jar包:https://wwp.lanzoum.com/iHmUY07b11ja 密码:1oj0)

import java.sql.*; import java.util.ArrayList; import java.util.List;  public class DBConnection {     private final static String URL="jdbc:sqlserver://127.0.0.1:1435;DatabaseName=book_db";     private final static String USER="sa";     private final static String PASSWORD="password";     private static Connection conn=null;      public DBConnection(){         try{             Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");////在连接之前,应引入数据库对应的数据库jdbc的jar包             conn=(Connection)DriverManager.getConnection(URL,USER,PASSWORD);         }catch(Exception ex){             ex.printStackTrace();         }     }      //新增     public boolean add(String[] args){         String sql="insert into books"                  "(id,name,author,location) "                  "values(?,?,?,?,?)";         try {             PreparedStatement psmt=conn.prepareStatement(sql);             psmt.setString(1,args[1]);             psmt.setString(2,args[2]);             psmt.setString(3,args[3]);             psmt.setString(4,args[4]);             psmt.execute();             return true;         } catch (SQLException ex) {             ex.printStackTrace();             return false;         }     }     //修改     public boolean update(String[] args){         String sql="update books set id=?,name=?,name=?,author=?,location=? where id=?";         try {             PreparedStatement psmt=conn.prepareStatement(sql);             psmt.setString(1,args[1]);             psmt.setString(2,args[2]);             psmt.setString(3,args[3]);             psmt.setString(4,args[4]);             psmt.setString(5,args[5]);             psmt.execute();             return true;         } catch (Exception ex) {             ex.printStackTrace();             return false;         }     }     //删除     public boolean delete(String id){         String sql="delete from books where id=?";         try {             PreparedStatement psmt=conn.prepareStatement(sql);             psmt.setString(1,id);             psmt.execute();             return true;         } catch (Exception ex) {             ex.printStackTrace();             return false;         }     }     //查看     public List<Book> search(String where){         List<Book> list=new ArrayList<Book>();         try {             Statement stmt=conn.createStatement();             ResultSet rs=stmt.executeQuery("select * from books " where);             Book b=null;             while(rs.next()){                 b=new Book();                 b.setId(rs.getString("id"));                 b.setName(rs.getString("name"));                 b.setAuthor(rs.getString("author"));                 b.setLocation(rs.getString("location"));                 list.add(b);             }         } catch (Exception ex) {             ex.printStackTrace();         }         return  list;     }      public void close()  {         try {             conn.close();         } catch (SQLException throwables) {             throwables.printStackTrace();         }     } }

(2)服务器代码

import java.net.ServerSocket; import java.net.Socket;  public class SocketServer {     ServerSocket server=null;     Socket socket=null;      public static void main(String[] args) {         new SocketServer();     }     public SocketServer(){         try {             server=new ServerSocket(8008);             while(true){                 System.out.println("服务器等待客户端连接...");                 socket =server.accept();                 String ip=socket.getLocalAddress().getHostAddress();                 int port=socket.getPort();                 System.out.println("客户端连接ip:" ip "  端口号:" port);                 new ServerThread(socket).start();             }         }catch (Exception ex){             ex.printStackTrace();         }     } }

线程实现

import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.util.List;  public class ServerThread extends Thread {     Socket socket;     OutputStream out=null;     InputStream in=null;     DBConnection db;      public ServerThread(Socket socket){         this.socket=socket;     }      public  void run(){         try{             String ip=socket.getLocalAddress().getHostAddress();             int port=socket.getPort();             byt[] buffer=new byte[1024];
            out=socket.getOutputStream();
            in=socket.getInputStream();
            db=new DBConnection();
            //接受指令
            int len=in.read(buffer,0,1024);
            if(len!=-1){

                String mes=new String(buffer,0,len,"UTF-8");
                String[] args=mes.split("\\+\\+\\+\\+");

                if (args[0].equals("insert")){

                    boolean b=db.add(args);
                    System.out.println(String.valueOf(b));
                    out.write(String.valueOf(b).getBytes());
                }
                else if(args[0].equals("update")){

                    boolean b=db.update(args);
                    System.out.println(String.valueOf(b));
                    out.write(String.valueOf(b).getBytes());

                }else if (args[0].equals("delete")){

                    boolean b=db.delete(args[1]);
                    System.out.println(String.valueOf(b));
                    out.write(String.valueOf(b).getBytes());

                }else if (args[0].equals("search")){

                    List<Book> list=db.search(args[1]);
                    String s="";

                    for (int i=0;i<list.size();i++){

                        Book book=list.get(i);
                        s+= book.getId();
                        s+="+++"+book.getName();
                        s+="+++"+book.getAuthor();
                        s+="+++"+book.getLocation();
                        s+="++++";

                    }
                    System.out.println(s);
                    if (s.equals("")){
                        s+="++++";
                    }
                    out.write(s.getBytes());
                }else{
                    System.out.println(mes);
                }
            }
        }catch (Exception ex){
            ex.printStackTrace();
            CloseUtil.closeAll(db,in,out,socket);
        }

    }
}

关闭工具类

public class CloseUtil {
		public static void closeAll(DBConnection db, Closeable... io) {
			for (Closeable temp:io) {
					if(null!=temp) {
						try {
							temp.close();
						} catch (IOException e) {
							e.printStackTrace();
						}
					}
			}
		}
}

Book类

public class Book {
    private String id="";
    private String name="";
    private String author="";
    private String location="";

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }
}

(3)数据库设计

含id,name,author,location四个字段

(4)Android端实现

链接:https://pan.baidu.com/s/1km09M0r1dsRMDK5BzUveNQ 提取码:y1ud

三,总结

这是我专业结课的设计,用来记录一下。

标签: 二极管je07b1ud20

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台