2018年11月17日 星期六 Cold
作为一个迷茫的本科生,最近是更加迷茫了,只想感慨一句,网络知识深似海啊!
临近期末,周一到周五几乎都满课,各类课设也是多了起来。
前端需要做一个校园BBS论坛网站,功能包括用户的登录与注册,帖子的发布,评论和查看等。
这个东西,还真是可大可小,可好好做亦可糊弄了事。
都大三了,还是好好动手做吧。本着“兵马未动,粮草先行”的战略思想,当然是从数据库入手。
之前分别学了SQL Server和Oracle,可惜学的都不咋滴,也就写写简单的Select了。
网上总结的这3个数据库总体的特点如下:
一、 Oracle:最贵,功能最多,安装最不方便,Oracle环境里的其他相关组件最多,支持平台数据量一般,使用中等方便,开发中等方便,不开源,速度最慢、最安全。
二、 Microsoft SQL Server:中等贵,功能最少,安装中等方便,sqlserver环境里的其他相关组件最少,支持平台最少,使用最方便,开发最方便,运维最方便,不开源,速度中等,一般安全
三、 Mysql:免费,功能中等,安装最方便,mysql环境里的其他相关组件数量中等,支持平台最多,使用最不方便,开发最不方便,运维最不方便,有开源版本,速度最快,最不安全。
所以,这次我选择用MySQL数据库。
说起这个安装,是真的辛酸,说好的安装最方便,由于个人的一些不当操作导致超级麻烦了。(也只能怪自己喽)
一开始在菜鸟联盟看的MySQL安装教程,根据它的方法进行安装,由于下的是压缩包,即一个免安装版,所以需要自己配置my.ini文件。
可是不管根据上面的教程还是网上其他地方的配置教程,都在初始化时(mysqld --initialize --console)出现了一些问题。
好不容易弄好my.ini文件,成功获取到root用户的初始密码,却发现登录时验证出错,据说是因为密码错误。
根据网上的教程改了改,发现还是不行。便开始重新用.msi文件进行安装。
由于之前的版本也没个卸载程序啥的,只是通过删除文件清楚了,却忽略了注册表残留。
根据网上给的方法清空,重装好几次还是不行,每次都卡死在start service,试了网上各类办法均无果, 到现在不明白为啥,真的已经清理的很干净了啊...
只好用最莽的办法,直接重装系统,说起来装系统还是快的啊,也可以很好地解决问题。
重装完系统后飞速装上了MySQL5.6,畅通无阻,可算是了了一桩大事。
那么之前的一些别的东西就得重新配置了,例如JDK、Tomcat等。
这里归纳下环境变量的配置,系统变量非用户变量
(1)新建->变量名"JAVA_HOME",变量值"C:\Java\jdk1.8.0_05"(即JDK的安装路径)
(2)编辑->变量名"Path",在原变量值的最后面加上“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”
(3)新建->变量名“CLASSPATH”,变量值“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”
验证:控制台输java,javac,java -version(注意有空格,今天输错了,一直以为没有配置成功...)
再归纳一些常用的东西:
MySQL常用操作
//创建数据库users
create database users ;
//创建table,注意需要指明主键
CREATE TABLE `usermessage` (
`name` varchar(20) NOT NULL DEFAULT '' COMMENT '用户名称',
`password` varchar(20) NOT NULL DEFAULT '' COMMENT '用户密码',
`sex` varchar(10) NOT NULL DEFAULT '' COMMENT '性别',
`email` varchar(20) NOT NULL DEFAULT '' COMMENT '邮箱地址',
`telenum` varchar(20) NOT NULL DEFAULT 0 COMMENT '电话号码',
`introduce` varchar(200) NOT NULL DEFAULT '' COMMENT '个人介绍',
PRIMARY KEY (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
//查表
select * from usermessage;
//插入数据
insert INTO `usermessage` values('jingyile','336336336','男','1159131237@qq.com','17865569671','冲鸭!!');
//更新数据
UPDATE usermessage SET introduce='学习 C++' WHERE name='jingyile';
//删表!!
DROP TABLE usermessage;
//查看字符集
show variables like '%character%';
//更改字符集为utf8
set character_set_server=utf8;
set character_set_filesystem=utf8;
利用JDBC连接MySQL数据库常用操作,需要自己下载所需jar包并导入.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page language="java" %>
<%@ page import="com.mysql.jdbc.Driver" %>
<%@ page import="java.sql.*" %>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
Class.forName("com.mysql.jdbc.Driver");//记载数据库驱动,注册到驱动管理器
String url = "jdbc:mysql://localhost:3306/users?characterEncoding=utf8"; //?后面的用于防止中文乱码
String user = "root"; //用户名
String password = "201658503102"; //密码
String tableName="abc";//表名
Connection conn = DriverManager.getConnection(url,user,password);
Statement statement = conn.createStatement();
-------------------------------------分割线----------------------------------------
String text=request.getParameter("txt");//从表单中接受数据
String id01="01";
String sql1="SELECT * FROM "+tableName+" where id='"+id01+"' order by num;"; //排序输出
ResultSet rs = statement.executeQuery(sql1);//用于产生单个结果集的语句
ResultSetMetaData rmeta = rs.getMetaData();//返回 ResultSetMetaData 对象
rs.last();//重要!!
int num=rs.getRow()+1;
rs.first();//一定要回退
String sql="Insert into "+tableName+" values('"+id01+"',"+num+",'"+text+"')";
statement.executeUpdate(sql);
statement.close();//一定要关闭
conn.close();
%>
Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。
Statement对象,用于执行不带参数的简单SQL语句。
Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。
方法 executeQuery 用于产生单个结果集的语句,例如 SELECT 语句。
方法 executeUpdate 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
方法 execute 用于执行返回多个结果集、多个更新计数或二者组合的语句。不常用...
ResultSet类是一种数据库查询结果存储类,就是当查询数据库的时候,可以将查询的结果放在具体的ResultSet对象中,其实我们把这种存储查询结果的ResultSet对象叫做ResultSet结果集。ResultSet结果集有一个索引指针,最初这个指针是指向第一条记录的前一个位置,也就是没有指向任何内容,使用x.next()方法就会使指针往后移动指向下一个记录,所以一定要先执行一次next()函数才会让指针指向第一条记录。
ResultSet相关ResultSetMetaData详细
中文乱码是一个很麻烦的东西,大概由于eclipse、MySQL使用的并非同一编码导致。
关于eclipse的syso快捷键为ALT+/ ,一段时间不用老是会忘记。
Tomcat http://localhost:8080/
Git同步仓库,cd 到文件目录
然后
git add 文件名
git commit -m "描述"
git statues
git push
控制台定位
直接输入盘符加冒号可以跳转到相应的盘去,如 d:
cd 路径 (子目录)
cd \路径 (并列)
一个超级实用的技巧,打开文件夹在状态栏输CMD可以直接定位。