窝工数据库第一次实验学习记录(上)

兵荒马乱的第一次实验啊……有的知识点记一下。

用java做了一个工厂的管理系统,记录方面包括java 的GUI和数据库两方面。

数据库

1,建立一个表

CREATE TABLE `name`(
 `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
);

2,添加外键
首先来说,外键是之前就在表里的值和其他表联动的存在

alter table 表名 add constraint FK_ID(自己起) foreign key(表里之前设计好的值) REFERENCES 外表表名(外表与之对应的值);

打个比方
设计一个表
实验的时候搞的在这里插入图片描述
其中department_id就是外键,之前就定义在里面的。
3,建立视图
视图,其实类似于封装,定义常用的搜索语句,在复杂的——比如各种莫名其妙的嵌套查找中很有用。

create view viewname as 搜索的语句;

比如我搞了一个关联两个多对多关系的视图,这样复杂的搜索语句就变短了。

   select * from wsview  group by w_id having count(*)>1;

其中,wsview为视图,后面用了group by (我总打成groupe……) having语句。
4,建立索引,其实这个……也是方便搜索吧,比如在我写的垃圾管理系统里面,可以搜通过名字搜出工人信息——虽然id才是主键。

ALTER TABLE `table_name` ADD UNIQUE ( `column` ); 

5,数据库与java之间的连接。
这是我根据其他人代码改的,亲测有效。
不过很奇怪,我电脑里数据库的端口是330,也许是因为年轻的我手滑删了一个字符?如果要用的话可以改成3306——其他人的都是3306。

public static void add(int id,String name,String sex,String specs,int departmentid)
	{
         Connection con;
         PreparedStatement stmt;
         boolean flag = false;
         //驱动程序名
         String driver = "com.mysql.cj.jdbc.Driver";
         //URL指向要访问的数据库名mydata,faclilty是我的数据库名称
         String url = "jdbc:mysql://localhost:330/facility?serverTimezone=UTC&useSSL=false";
         //MySQL配置时的用户名
         String user = "root";
         //MySQL配置时的密码
         String password = "525727";
         //这是插入语句,顺便就放在这里了
         String sql = "insert into engineer values (?,?,?,?,?)";
         try {
             //加载驱动程序
             Class.forName(driver);
             //1.getConnection()方法,连接MySQL数据库!!
             con = DriverManager.getConnection(url,user,password);
             if(!con.isClosed())
                 System.out.println("Succeeded connecting to the Database!");
             //2.创建statement类对象,用来执行SQL语句!!
             stmt = (PreparedStatement) con.prepareStatement(sql);
             //根据表的性质修改
             stmt.setInt(1, id);
 			stmt.setString(2, name);
 			stmt.setString(3, sex);
 			stmt.setString(4, specs);
 			stmt.setInt(5, departmentid);
 			stmt.executeUpdate();
             con.close();
         } catch(ClassNotFoundException e) {   
             //数据库驱动类异常处理
            System.out.println("Sorry,can`t find the Driver!");   
             e.printStackTrace();
             } catch(SQLException e) {
             //数据库连接失败异常处理
            e.printStackTrace();
             }catch (Exception e) {
             // TODO: handle exception
             e.printStackTrace();
              }finally{
             System.out.println("数据库数据成功获取!!");
         }
         }

6,删除语句就不留底了,有主键/索引和表名还是挺好改的。
7,结果集用法。
如果是搜索,可以通过结果集进行储存/表示/遍历,用法大概如下。

 ResultSet rs = null;
 rs = statement.executeQuery(sqlselect);
 while(rs.next()!= false)
   {
       int e_id = rs.getInt(1);
	   String e_name = rs.getString(2);
	   String e_sex = rs.getString(3);
	   String e_specs = rs.getString(4);
	   int departid = rs.getInt(5);
	   temp1 = temp1 + e_id+" "+e_name+" "+e_sex+" "+e_specs+" "+departid+"\t";
    }

结果集是一行一行的往下扫的。
【小声bb
数据库的写的差不多了,做的时候感觉不会的挺多,查了不少资料,但是写完才发现没多少……果然我是个彻头彻尾的菜鸡。

              *此刻的阴霾不过是短暂的雨季,向前看,还有一片明亮的天,不会使人感到彷徨*
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值