1.下載數據庫mysql的官網:
[url]www.mysql.com[/url] 須要註冊mysql用戶
《MySQL For Windows V5.2 Alpha》
[url]http://www.skycn.com/soft/1262.html[/url] 更新時間:2007-01-14
2.下載mysql數據庫驅動,地址:
[url]http://www.mysql.com/products/connector/[/url]全部驅動
java支持:
[url]http://dev.mysql.com/downloads/connector/j/5.0.html[/url]
圖形界面***做工具:
[url]http://dev.mysql.com/downloads/gui-tools/5.0.html[/url]或
[url]http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-gui-tools-5.0-r12-win32.msi/from/pick[/url]
3.解壓後,把裏面的mysql-connector-java-3.1.0-alpha-bin.jar文件複製到你的tomcat/common/lib下,重啓Tomcat,jsp鏈接mysql的環境就完成。
網站的作法,是把jar文件直接釋放到網站目錄的\WEB-INF\lib下
安裝參考文章:(文件包)[url]http://hi.baidu.com/ybbucd/blog/item/5662d02a115f762fd42af1c0.html[/url]
(安裝包)《如何一步步安裝MYSQL數據庫》
[url]http://www.zttt.net/blog/showartic.asp?id=474[/url]
安裝注意事項:
1).安裝mysql 5.0前必定要把舊版本卸載掉,安裝它的環境不能雜
2).對於mysql 產生亂碼的現象也要在在安裝 的時候設置要選擇語言的時候你不要默認要選擇gbk或者gb2312 到測試是否成功的時候到start server它不會立刻就經過的要等等
3).可去下載mysql管理軟件:EMS MySQL Manager 3 Lite
4).個人本機Secutity Settins:默認用戶root rootpwd:bin5812086 容許遠程***做,不容許匿名***做
5).MYSQL初始化
6).啓動
方法一:系統默認啓動:由於安裝完MYSQL後該數據庫將以服務的形式存在,因此在每次啓動系統時都會自動啓動MYSQL數據庫。
方法二:命令啓動法手工運行bin目錄中的mysqladmin程序也能夠實現啓動MYSQL數據庫的目的。
7).安裝後遇到的問題:
一:數據庫服務器本機測試鏈接經過,而咱們機器鏈接的時候出現報錯:null, message from server: "Host '210.209.142.190' is not allowed to connect to this MySQL server"'.
解決:在安裝開始配置時,除了設置root的密碼外,要記得勾選enable acess remote connect容許遠程鏈接,不然只能本機鏈接
若是是已經安裝了,則到\MySQL\MySQL Server 5.0\bin目錄下,打開MySQLInstanceConfig.exe進行從新初始化設置
二:注意數據庫鏈接URL,別忘了是完整的地址,包括了默認端口號3306
三:修改MySQL默認字符集的方法:在配置文件的[mysqld]一節中加上default-character-set=gbk,注意gbk爲小寫,若是改成大寫可能不行,我沒測試過。修改以後,重啓動mysql服務器,之後新增長的表的字符集就是gbk字符集了。你也能夠用alter table命令修改一個表格的字符集,具體語法參見QueryBrowser的syntax說明
mysql的中文亂碼是詭異的
兩地的mysql服務器結合着jsp頁面和mysql-front使我不得不對多種編碼組合進行試驗
最終的一個較令本身滿意的方案是
遠程linux上的mysql設爲utf8
jsp頁面與數據庫鏈接用utf8
本地windows上的mysql設爲gb2312以將就mysql-front
從windows的mysql往linux的mysql導數據時
使用mysqldump --default-character-set=utf8 database [table] > some.sql
而從linux備份給windows時不須要額外轉換
另外本地的utf8的jsp***做gb2312的mysql也沒有問題
緣由多是windows上的mysql是5.*而linux上只是4.*
高版加強了自動轉換或兼容的能力
4.語法
1).***做mysql經常使用命令:
鏈接:mysql -h 192.168.1.2 -u root -p <enter> nlt
2).MySQL 不支持存儲過程
3).《MySQL 5.1參考手冊》
[url]http://dev.mysql.com/doc/refman/5.1/zh/index.html[/url]
4).鏈接語法
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://host:port/database","user","password");
5.編程
1)、用DriverManager登記mm.mysql
mm.mysql的class名爲org.gjt.mm.mysql.Driver,登記時必須寫成
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
2)、jdbc url參數說明
url格式:jdbc:mysql://[hostname][:port]/dbname[?param1=value1][?m2=value2]...
參數名 取值 缺省
user 數據庫用戶名 無
password 數據庫用戶口令 無
autoReconnect 當數據庫鏈接丟失時是否自動鏈接,取值true/false false
maxReconnects 若是autoReconnect爲true,此參數爲重試次數,缺省爲3次 3
initialTimeout 若是autoReconnect爲true,此參數爲從新鏈接前等待的秒數 2
maxRows 設置查詢時返回的行數,0表示所有 0
useUnicode 是否使用unicode輸出,true/false false
characterEncoding 若是useUnicode,該參數制定encoding類型,建議使用8859_1 無
提示
同時使用useUnicode,characterEncoding,能解決數據庫輸出時的中文問題
如:jdbc:mysql://localhost/test?user=root&useUnicode=true;characterEncoding=8859_1
3).unsigned 爲「無符號」的意思,
unsigned,zerofill 既爲非負數,用此類型能夠增長數據長度,
例如若是 int最大是65535,那 int unsigned zerofill 最大
例子1:實際例子,舉一個簡單的例子
這個jsp例子使用一個庫,該庫只有一個表(地址簿)
create database addressbook
use addressbook
create table addressbook
(
id int auto_increment primary key,
name varchar(30),
address varchar(255),
phone varchar(20)
);
插入記錄
insert into addressbook (name,address,phone) values ('jjx','zhejiang yuyao','0574-2222222');
jsp代碼:代碼中使用了absolute,ResultSet.TYPE_SCROOL_SENSITIVE等的目錄是爲了測試mm.mysql是否符合jdbc 2.0的規範
<%@ page import="java.sql.*" %>
<%
out.println("通信錄!");
try
{
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
}
catch (Exception E)
{
out.println("Unable to load driver.");
}
try
{
Connection C = DriverManager.getConnection("jdbc:mysql://localhost/addressbook?user=root&password=jjx&useUnicode=true&characterEncoding=8859_1");
Statement s = C.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = s.executeQuery("select * from addressbook") ;
out.println("<table border=1>") ;
int i = 1 ;
for ( i=10; i < 20 ; i++ )
{
if (rs.absolute(i))
{
out.println("<tr><td>") ;
out.println(rs.getString(1)) ;
out.println("</td>") ;
out.println("<td>") ;
out.print(rs.getString(2)) ;
out.println("</td>") ;
out.println("<td>") ;
out.print(rs.getString(3)) ;
out.println("</td></tr>") ;
}
else
{
break ;
}
}
out.println("</table>") ;
rs.close() ;
s.close() ;
C.close() ;
}
catch (SQLException E)
{
out.println("SQLException: " + E.getMessage()) ;
out.println("SQLState: " + E.getSQLState()) ;
out.println("VendorError: " + E.getErrorCode()) ;
}
%>
例子2:
<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%> <html> <body> <% Class.forName("org.gjt.mm.mysql.Driver").newInstance() ; String url ="jdbc:mysql://localhost:3306/db_name?user=yourusername&password=yourpassword&useUnicode=true&characterEncoding=GB2312" ; Connection conn= DriverManager.getConnection(url) ; Statement stmt=conn.createStatement() ; String query="select * from table_name order by id" ; ResultSet rs=stmt.executeQuery(query); while( rs.next() ) { String s=rs.getString(1) ;//看準你的字段是否是字符型,否則就不能用getString,根據字段類使用getBoolean等等 out.print(s+"<br>") ; } %> </body> </html>