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常用操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
//创建数据库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包并导入.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<%@ 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详细
尝试新建一个JSP文件仅仅用于在其他每个页面之间传值,发现很难做到,很麻烦,最后用的session
关于JSP的session
一个网页中把变量username以username为名字保存在session上
<%session.setAttribute("username",username);%>
在另一个页面中通过getAttribute方法取得username的值
<%String username = (String)session.getAttribute("username");%>
"username"是传递变量的名字 username 是变量
session是一次会话只要浏览器不关闭就不会关闭会话 一般默认保存30分钟可以根据自己的需要更改
中文乱码是一个很麻烦的东西,大概由于eclipse、MySQL使用的并非同一编码导致。
关于eclipse的syso快捷键为ALT+/ ,一段时间不用老是会忘记。
Tomcat
启动 startup.bat 关闭 shutdown.bat
测试访问 http://localhost:8080/
Git同步仓库,cd 到文件目录
然后
git add 文件名
git commit -m "描述"
git statues
git push
控制台定位
直接输入盘符加冒号可以跳转到相应的盘去,如 d:
cd 路径 (子目录)
cd \路径 (并列)
一个超级实用的技巧,打开文件夹在状态栏输CMD可以直接定位。
3 条咸鱼在这里躺着
Hello 博主,我还找到有一个在 Windows 下可以快速打开命令行并定位到当前目录的方法
在需要打开命令行的页面下面,按住 Shift 键并点击鼠标右键,然后点击“在此处打开CMD”(Windows10 默认是“在此处打开PowerShell”)即可
关于 Git 如果你可以接收 Git GUI 的话(其实蛮多人蛮鄙视的QAQ),给你推荐一个超好用的 GUI——GitKraken,这个GUI做 diff 和 merge 的时候超舒服。
还有还有。。。如果可以的话可以换友链吗我的站https://hisun.me(因为各种原因已经荒废很长时间。。。准备近期恢复更新)
@yexing17
不好意思哈,最近忙着准备考研,没怎么看过网站后台,之前设置的邮件提醒好像也失效了。首先谢谢你的推荐哦,换友链可以的呢,可以提供下网站介绍和图片嘛?
@yexing17
现在应该可以正常收到回复了吧