兵荒马乱的第一次实验啊……有的知识点记一下。
用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
数据库的写的差不多了,做的时候感觉不会的挺多,查了不少资料,但是写完才发现没多少……果然我是个彻头彻尾的菜鸡。
*此刻的阴霾不过是短暂的雨季,向前看,还有一片明亮的天,不会使人感到彷徨*