follow大神教程——实践java爬虫之六

朕已无力吐糟实验室的网速了。。。

10点半左右开机,网线、wifi都连不上,右下角wifi连上但有黄色叹号,

QQ错误码:0x00000001 表示访问网络失败

ipconfig,擦,本机为私有IP,连路由器都连不上,搞毛线啊。

使出必杀技:疑难解答,显示无线访问点问题,但其他人又能连上,无语;

思科路由器太不稳定了吧,使出终极必杀技,保持黄色叹号的状态,吃饭睡觉2小时左右,回来发现黄色叹号消失,——这绝壁是路由器问题吧?

连上之后上Q,

QQ错误码:0x00000050 表示DNS错误

 QQ电脑管家的DNS选优工具测试一下,反正都那么慢,还原到初试DNS好了;

QQ可以登录了,世界再次恢复和平。

mysql中的注释

mysql 服务器支持 # 到该行结束、-- 到该行结束 以及 /* 行中间或多个行 */ 的注释方格: 
mysql> SELECT 1+1;     # 这个注释直到该行结束
mysql> SELECT 1+1;     -- 这个注释直到该行结束
mysql> SELECT 1 /* 这是一个在行中间的注释 */ + 1;
mysql> SELECT 1+
/*
这是一个
多行注释的形式
*/
1; 尽管服务器理解刚才描述的注释句法,但 MySQL 客户端的语法分析在 /* ... */ 注释方式上还有所限制:

使用图形界面工具navicat

navicat中配置字体为consoles,F6打开命令行界面,简直是Matlab的感脚啊。

 

mysql> select * from student;
+----+------+--------+
| ID | name | class  |
+----+------+--------+
|  1 | tom  | 计算机 |
|  0 | NULL | NULL   |
|  0 | NULL | NULL   |
+----+------+--------+
3 rows in set

mysql> show tables;
+------------------+
| Tables_in_db0703 |
+------------------+
| student          |
+------------------+
1 row in set

mysql> show table;
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
mysql> show database;
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database' at line 1
mysql> create database demo;
Query OK, 1 row affected

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db0703             |
| demo               |
| mysql              |
| test               |
+--------------------+
5 rows in set

mysql> select * from student;
+----+------+--------+
| ID | name | class  |
+----+------+--------+
|  1 | tom  | 计算机 |
|  0 | NULL | NULL   |
|  0 | NULL | NULL   |
+----+------+--------+
3 rows in set

mysql> use demo;
Database changed
mysql> show tables;
Empty set

mysql> create table demoTable(
    -> ID int not null,
    -> user varchar(16) not null
    -> );
Query OK, 0 rows affected
mysql> show tables;
+----------------+
| Tables_in_demo |
+----------------+
| demotable      |
+----------------+
1 row in set

mysql> --删除表
    -> --drop table demoTable;
    -> --显示表的结构
    -> describe demoTable;
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '--删除表

--drop table demoTable;

--显示表的结构           #【此处“--”后面加个空格就好了】

describe de' at line 1
mysql> describe demoTable;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| ID    | int(11)     | NO   |     | NULL    |       |
| user  | varchar(16) | NO   |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set

mysql> insert into demotable values(1,'admin');
Query OK, 1 row affected

mysql> select * from demotable;
+----+-------+
| ID | user  |
+----+-------+
|  1 | admin |
+----+-------+
1 row in set

mysql> delete from demotable where id=2;
Query OK, 0 rows affected

mysql>

简单入门就先show databases;再use DBname;

Eclipse中引入jar包

本例中引入mysql-connector-java-5.1.22.zip中jar包(参考http://www.cnblogs.com/fickleness/archive/2013/06/27/3158687.html)

读取表中内容

运行结果

follow大神教程——实践java爬虫之六

小例子的源码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestMysql {
 public static void main(String[] args){
  // 驱动程序名
  String driver = "com.mysql.jdbc.Driver";
  // URL指向要访问的数据库名db0703
  String url = "jdbc:mysql://localhost:3306/db0703";
  // MySQL配置时的用户名
  String user = "root";
  // MySQL配置时的密码
  String password = "";
  try {
   // 加载驱动程序
   Class.forName(driver);
   // 连续数据库
   Connection conn = DriverManager.getConnection(url, user, password);
   if(!conn.isClosed())
   System.out.println("Succeeded connecting to the Database!");
   // statement用来执行SQL语句
   Statement statement = conn.createStatement();
   // 要执行的SQL语句
   String sql = "select * from student";
   // 结果存储到rs中,可能多条数据,需要循环读取
   ResultSet rs = statement.executeQuery(sql);
   System.out.println("-----------------");
   System.out.println("执行结果如下所示:");
   System.out.println("-----------------");
   System.out.println(" id" + "\t" + "name"+"\t"+"class");
   System.out.println("-----------------");
   //初始化变量
   int ID=-1;
   String name = null;
   String classname= null;
   //循环读取
   while(rs.next()) {
    // 读取3列数据
    ID = rs.getInt("ID");
    name=rs.getString("name");
    classname=rs.getString("class");
    //输出结果
    System.out.println(ID + "\t" + name+"\t"+classname);
    
    // 首先使用ISO-8859-1字符集将name解码为字节序列并将结果存储新的字节数组中。
    // 然后使用GB2312字符集解码指定的字节数组
    //name = new String(name.getBytes("ISO-8859-1"),"GB2312");
   }
   //依次关闭ResultSet对象、Statement对象、Connection对象,最好用if判断一下是否为空
   rs.close();
   statement.close();
   conn.close();
  } catch(ClassNotFoundException e) {
   System.out.println("Sorry,can't find the Driver!");
   e.printStackTrace();
  } catch(SQLException e) {
   e.printStackTrace();
  } catch(Exception e) {
   e.printStackTrace();
  }
 }
}

 

很好的mysql教程

http://yanqiaosun.blog.163.com/blog/static/216133133201302795115878/

 

一、java连接MySQL数据库

1、安装mysql connector/j驱动

       添加jdbc驱动: mysql-connection-java-5.1.10-bin.jar

2、连接MySQL数据库

       在java.sql包中存在DriverManager类、Connection接口、Statement接口和ResultSet接口。

DriverManager类:管理驱动程序和连接数据库

Connection接口:管理建立好的数据库连接

Statement接口:执行sql语句

ResultSet接口:存储数据库返回的记录


forName()方法指定MySQL驱动的语法如下:

class.forname("com.mysql.jdbc.Driver");

class.forName("org.git.mysql.Driver");

两个驱动实际上是一样的,后者继承前者。

getConnection()方法有三个参数,分别是url、user和password。

url指定idbc的数据源,数据源必须要指定他的IP、端口号等。

Connection connection=DriverManager.getConnection(url,user,password); //创建connection对象

例子:

连接本地计算机的mysql数据库,mysql使用默认端口3306,连接的数据库是syq,使用用户root来连接,root用户的密码是123456.连接mysql

的语句如下:

Connection

connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/syq","root","123456");

通过这个语句就可以连接到MySQL的syq数据库了。该语句也可以写成下面的形式:

String url="jdbc:mysql://localhost:3306/syq"; //获取协议、IP、端口等信息

String user="root"; //获取数据库用户名

String password="123456";//获取数据库用户密码

Connection connection=DriverManager.getConnection(url,user,password); //创建Connection对象

二、java操纵MySQL数据库

       连接MySQL数据库之后,可以对MySQL数据库中的数据进行查询、插入、更新、删除等操作。Statement接口主要用来执行sql语句,其中定义一些执行sql语句的方法。sql语句执行后返回结果由ResultSet接口管理。通过这两个接口,java可以方便的操作MySQL数据库。

1、创建Statement对象

Connection对象调用createStatement()方法来创建Statement对象,其代码如下:

Statement statement=connection.createStatement();

其中,statement是Statement对象;createStatement()方法返回Statement对象。通过这个java语句就可以创建Statement对象。Statement对

象创建成功后,可以调用其中的方法来执行SQL语句。

2、使用select语句查询数据

Statement对象可以调用excuteQuery()方法执行select语句。select的查询结果返回给ResultSet对象。调用excuteQuery()方法的代码是:

ResultSet result=statement.excuteQuery("select语句");

通过该条语句可以将查询结果存储 到result中。查询结果可能有多条记录,这就需要使用循环语句来读取所有记录,其代码如下:

while(result.next()){

String s=resule.getString("字段名");

System.out.print(s);

}

例子:

从score表中查询学生的学号、考试科目和成绩,部分代码:

Statement statement=connection.createStatement();

Result result=statement.excuteQuery("select stu_id,c_name,grade from score");

while(result.next()){

String id=result.getString("stu_id");

String course=result.getString("c_name");

String grade=result.getString("grade");

System.out.println(id+" "+course+" "+grade);

}

3、插入更新或者删除数据

excuteQuery()方法只能执行select语句。如果需要进行插入、更新或者删除操作,则需要Statement对象调用excuteUpdate()方法来实现。

excuteUpdate执行完后,返回影响表的行数。下面是调用excuteUpdate()方法的代码:

int result=statement.excuteUpdate(sql);

其中“sql”必须是insert语句、update语句或者delete语句。该方法返回的结果为数字。

例子:

下面向score表插入一条新记录,部分代码:

Statement statement=connection.createStatement();

String sql="insert into score values(21,902,'英语',85)";

int result=statement.excuteUpdate(sql);

System.out.println(result);

更新score表中id为16的记录,将该记录的grade字段值 改为100,部分代码:

Statement statement=connection.createStatement();

String sql="UPDATE score set grade=100 where id=16";

int result=statement.excuteUpdate(sql);

System.out.println(result);

删除score表中id为16的记录,部分代码:

Statement statement=connection.createStatement();

String sql="delete from score where id=16";

int result=statement.excuteUpdate(sql);

System.out.println(result);

4、执行任意sql语句

       无法确定要执行的语句是查询还是更新时,可以使用excute()函数。该函数的返回结果是boolean类型的值,返回值为true表示执行查询语句,false表示执行更新语句。下面是调用excute()方法的代码:

boolean result=statement.excute(sql);

5、关闭创建的对象

       当所有sql语句都执行完毕后,需要关闭创建的Connection对象、Statement对象和Result对象。关闭对象的顺序与创建对象的顺序相反,关闭的顺序为ResultSet对象、Statement对象、Connection对象。对象调用close()方法来关闭对象,然后将对象的值设为空。

关闭对象部分代码:

if(result!=null){ //判断ResultSet对象是否为空

result.close();//调用close()方法关闭ResultSet对象

result=null;

}

if(statement!=null){

statement.close();

statement=null;

}

if(connection!=null){

connection.close();

connection=null;

}

三、java备份与还原MySQL数据库

java语言中可以执行mysqladmin命令来备份MySQL数据量,也可以执行mysql命令来还原mysql数据库。

1、java备份MySQL数据库

通常使用mysqldump命令来备份MySQL数据库,其语句如下:

mysqldump -u username -pPassword dbname table1 table2 …>BackupName.sql

调用exec()方法代码:

Runtime rt=Runtime.getRuntime();

rt.exec("命令语句");

例子:Windows操作系统下java备份MySQL数据库:

String str="mysqldump -u root -p123456 --opt test>C:/test.sql";//将mysqldump命令的语句赋值给str

Runtime rt=Runtime.getRuntime();//创建Runtime对象

rt.exec("cmd/c"+str);//调用exec()函数

2、java还原MySQL数据库

通常使用mysql命令来还原MySQL数据库,其语句如下:

mysql -u root -p [dbname]<backup.sql

Java还原MySql数据库:

String str="mysql -u root -p123456 test<C:/test.sql";//将test.sql文件还原到名为test的数据库中

Runtime rt=Runtime.getRuntime();

rt.exec("cmd/c"+str);

全部内容

http://yanqiaosun.blog.163.com/blog/#m=0&t=1&c=fks_084070092094080071086084080095086087087066087085087064087

 

 

 

 

你可能感兴趣的:(follow大神教程——实践java爬虫之六)