mysql安装:
在安装的过程中可能会遇到一些问题,比如出现Error 2003 : Can’t connect to MYSQL server
on
‘localhost’(10061),就是安装到最后一步出现错误。原因可能有两个,一是你之前安装过mysql,但是没有卸载清除干净;二是因为第一次安装,mysql没有启动。
解决方法:
1. 在重复安装mysql时,必须将之前和mysql相关的一切都停止(服务,安装目录,进程,注册表),卸载掉,重启计算机再重新安装,否则在配置时,会报错。或者在每次开启Mysql时都要在管理->服务中找到相应的mysql,开启。在“服务”中停止mysql服务,在控制面板中卸载掉mysql,删除掉mysql的安装目录,在注册表中删除掉mysql的相应目录。然后重新运行Mysql安装程序。在cmd中输入regedit进入注册表,找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/MySQL5,删除它。在重新安装的时候可以重新选择MYSQL的名字,选择4或者3什么的,和以前安装的时候用不同的名字。
2. 删除c:\windows下的My.ini;
然后打开c:\mysql\bin\winmysqladmin.exe,输入用户名和密码; 然后在dos下输入mysqld-nt
–remove删除服务,再接着输入mysqld-nt –install,输入mysql,启动成功。可以参考http://wenwen.soso.com/z/q35875881.htm
在命令行中运行mysql各种常见命令
注意每个sql语句命令都要以分号结束。
连接命令:mysql –h[主机地址] –u[用户名] –p[用户密码]
创建数据库: create database [数据库名];
显示所有数据库:show databases;
打开数据库: use [库名];
当前选择的库状态:select database();
创建表: create table [表名]([字段名][字段类型][字段要求][字段参数],……);
显示表字段:describe 表名;
显示所有表格:show tables;
删除库:drop database[库名];
删除表:drop table[表名];
添加:insert into [表名] values(“”,””,……);
查询: select * from [表名] where ([条件]);
删除: delete from [表名] where ([条件]);
查询表的所有约束:show create table [表名];
java 实现mysql的jdbc连接例子
首先在mysql控制台创建数据库;
SQL代码:
Create database test;
Use test;
Create table user(username varchar(15),password
varchar(20));
Insert into user values(‘userone’,’123456’);
Java代码:
package com.dgy.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestJDBC {
static Connection conn =
null;
public static
Connection getConnectionByJDBC() {
//在此处必须用try来检查装载驱动包是否安装正常,可以用mysql-connector-java-5.0.8-bin.jar等版本的包。否则,会报错java.lang.ClassNotFoundException:
com.mysql.jdbc.Driver。
try {
//装载驱动包类
Class.forName(com.mysql.jdbc.Driver"); //加载驱动
}catch(ClassNotFoundException e) {
System.out.println("装载驱动包出现异常!请查正!");
e.printStackTrace();
}
try{
//建立jdbc连接,要注意第一个参数, 如果127.0.0.1出现CommunicationsException异常,可能就需要改为localhost才可以,test是数据库
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123456");
}catch(SQLException e) {
System.out.println("链接数据库发生异常!");
e.printStackTrace();
}
return conn;
}
public static void test(){
String sql = "select * from user";
getConnectionByJDBC();
try{
//创建一个jdbc声明
Statement stmt = conn.createStatement();
//执行查询
// Statement 用于执行静态 SQL 语句并返回它所生成结果的对象,
在默认情况下,同一时间每个 Statement 对象在只能打开一个 ResultSet
对象。 因此,如果读取一个 ResultSet
对象与读取另一个交叉,则这两个对象必须是由不同的Statement 对象生成的。如果存在某个语句的打开的当前 ResultSet
对象,则Statement 接口中的所有执行方法都会隐式关闭它。ResultSet
表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。ResultSet
对象具有指向其当前数据行的指针。最初,指针被置于第一行之前。next 方法将指针移动到下一行;因为该方法在 ResultSet
对象中没有下一行时返回 false,所以可以在 while 循环中 使用它来迭代结果集。
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
String username = rs.getString("username");
String password= rs.getString("password");
System.out.println(username +""+ password);
}
}catch (SQLException e){
System.out.println(e.getMessage());
e.printStackTrace();
}finally{
//预防性关闭连接(避免异常发生时在try语句块关闭连接没有执行)
try{
if(conn !=
null) conn.close();
} catch(SQLException e){
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
public static void main(String[] args){
TestJDBC testjdbc = new TestJDBC();
testjdbc.test();
}
}
不过在链接比较频繁时,建议使用数据源链接池的方法,那样比较快
和网址http://java.chinaitlab.com/JDBCJDO/763969.html
程序遇到的问题:
其中数据库名为userifo,表明为table,表中有三个字段:id(自动增量)、username(字符串)、password(字符串)
String name=request.getParameter("name");String
pass=request.getParameter("pass");
String sql="INSERT INTO userinfo.table(username,password) values
(?,?)";
PreparedStatement pstm=conn.prepareStatement(sql);
pstm.setString(1, name);
pstm.setString(2, pass);
pstm.executeUpdate();
运行后报错:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
You have an error in your SQL syntax;
但是如果把sql改为:String sql="insert into
userinfo.table(username,password)
values('"+name+"','"+pass+"')";
就可以运行。
改为String sql="INSERT INTO userinfo.table(username,password) values
(?,?,?)";然后pstm.setString的类似语句写三次,就是对每个?都进行插入即可。这里插入的序号和values中的?是相对应的。
mysql数据库中文乱码问题
解决乱码最好的方法是在项目设计之初,统一所有的字符集,例如页面、request对象以及数据库等等。
几种常见的乱码现象:
1、页面乱码
单纯的页面乱码是很好解决的,只要修改头部适合的字符集即可,如果页面中文显示乱码,你可以把字符集修改为:gb2312或gbk。
2、页面之间传递的参数是乱码
页面之间传递参数出现的乱码,就要解决页面编码和requset的字符集问题,在参数传进传出时重新设置相应的字符集。比如:request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");
3、数据库乱码(mysql)
在安装数据库的时候有一个默认设置所有字符集为latin1,如果安装的时候没有注意,那么在安装后可以用config
vizard进行重新设置数据库的字符集。选择gbk或者gb2312。
在DOS命令下进入数据库查阅字符集(show variables
like"%char%"; )显示如下:
+--------------------------+---------------+
| Variable_name | Value |
+--------------------------+---------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
+--------------------------+---------------+
+--------------------------+---------------+
|
Variable_name |
Value |
+--------------------------+---------------+
|
character_set_client |
latin1 |
| character_set_connection |
latin1 |
|
character_set_database |
latin1 |
| character_set_filesystem |
binary |
|
character_set_results |
latin1 |
|
character_set_server |
latin1 |
|
character_set_system |
utf8 |
+--------------------------+---------------+
1、修改数据库默认字符集:
打开C:\Program Files\MySQL\MySQL Server 5.0里面的my.ini文件找到这段文字:
# The default character set that will be used when a new schema or
table is
# created and no character set is defined
default-character-set=latin1
把default-character-set=latin1改为default-character-set=gbk
这时候show 一下字符集(重新启动mysql服务,命令:show variables like"%char%";
)显示如下:
+--------------------------+---------------+
| Variable_name | Value |
+--------------------------+---------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | gbk |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
+--------------------------+---------------+
+--------------------------+---------------+
|
Variable_name |
Value |
+--------------------------+---------------+
|
character_set_client |
latin1 |
| character_set_connection |
latin1 |
|
character_set_database |
gbk |
| character_set_filesystem |
binary |
|
character_set_results |
latin1 |
|
character_set_server |
latin1 |
|
character_set_system |
utf8 |
+--------------------------+---------------+
2、如果你是导入的数据库,需要对my.ini做如下修改找到
引用
[client]
port=3306
[mysql]
default-character-set=latin1
把 default-character-set=latin1改为default-character-set=gbk
# SERVER SECTION
#
----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure
that
# you have installed the server correctly (see above) so it reads
this
# file.
#
[mysqld]
找到
增加default-character-set=gbk
然后在设置一下你导入的数据库字符集即可:
命令:alter database 你的数据库名 charset = gbk;
重新启动mysql服务,show 一下字符集(,命令:show variables like"%char%"; )显示如下:
+--------------------------+---------------+
| Variable_name | Value |
+--------------------------+---------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | gbk |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | gbk |
| character_set_system | utf8 |
+--------------------------+---------------+
+--------------------------+---------------+
|
Variable_name |
Value |
+--------------------------+---------------+
|
character_set_client |
gbk |
| character_set_connection |
gbk |
|
character_set_database |
gbk |
| character_set_filesystem |
binary |
|
character_set_results |
gbk |
|
character_set_server |
gbk |
|
character_set_system |
utf8 |
+--------------------------+---------------+
如果你见到如上内容,数据库字符集问题已解决。
如果你的项目还有字符集问题,那就需要查看一下是否是其他因素导致的乱码了。
比如在创建数据库的时候可以加上对字符集的控制;
Create database [数据库名] character set gbk;
在程序进行数据库连接的时候进行设置,如:
Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/wjl?useUnicode=true&characterEncoding=gbk","root","morgan");
sqlite的使用
在智能手机上系统会自带一个数据库系统sqlite。其使用大概和mysql类似,具体可见网址http://mobile.51cto.com/android-320675.htm。
在cmd下,进入android-sdk-windows/platform-tools,输入adb
shell,进入shell之后可以rm database [库名],也可以cd
data/data/moc.morgan,进入自己数据库所在的包中,输入ls,可以看到自己的数据库,点击sqlite3
[库名],就可以进入数据库。.tables;是显示所有的表格,下面的操作和mysql是相一致的。