Struts 框架帶有幾個自定義標簽庫(有關 Struts 的更多信息的鏈接請參閱 參考資料 )。這些庫中的一個標簽可以創建一個支持改寫 URL 的鏈接并用 jsessionid
對改寫的連接編碼。
不過有一個問題:如果希望傳遞一組請求參數(如查詢字符串),也許必須為此創建一個 Java scriptlet。真是亂!下面的清單 (search_results.jap) 展示了一個 JSP 頁,它被迫加入了這樣一個 scriptlet。
<%@ taglib uri="struts-html" prefix="html" %> <jsp:useBean class="java.util.HashMap" id="deleteParams" /> <% deleteParams.put("id", cd.getId()); deleteParams.put("method","delete"); %> <!-- Pass the map named deleteParams to html:link to generate the request parameters--> <html:link action="/deleteCD" name="deleteParams">delete </html:link> </font></td>
search_results.jsp 創建一個 hashmap 并向這個 map 傳遞兩個屬性。在下面幾小節,我們將創建一個不用 Java 代碼完成這項工作的自定義標簽。我們的標簽將定義如下的一個 hashmap:
<map:mapDefine id="deleteParams"> <map:mapEntry id="id" name="cd" property="id"/> <map:mapEntry id="method" value="delete"/> </map:mapDefine> <!-- Pass the map named deleteParams to html:link to generate the request parameters--> <html:link action="/deleteCD" name="deleteParams">delete </html:link> </font></td>
這將使我們可以容易地創建小型 map。
這個例子將展示幾個關鍵概念,包括使用嵌套標簽和定義 scriplet 變量。首先我將解釋這個標簽是如何工作的。然后在以后的幾節中建立這些概念,并介紹如何編寫這個標簽的不同形式,使它們處理其正文并控制執行流程。
一、基本概念:
JSP2.0中為了簡化標簽的復雜性,增加了制作Simple Tag的標簽類SimpleTagSupport類。
SimpleTagSupport類是實現SimpleTag接口的。它只需要實現一個doTag()方法即可,而不需要一堆回傳值。
舉例說明:
例1:HelloSimpleTag標簽
第一步:制作標簽處理類
HelloSimpleTag.java
package com.newould.taglib;
import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class HelloSimpleTag extends SimpleTagSupport {
public void doTag() throws JspException, IOException {
??
????? JspWriter out = getJspContext().getOut();
????? out.println("Hello Simple Tag");
}
}
第二步:編寫標簽性質文件
MyTaglib.tld
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="
?????? xmlns:xsi="
?????? xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
?????? version="2.0">
????
?????? <description>My Taglib by JavaWorld.com.tw</description>
?????? <tlib-version>1.0</tlib-version>
?????? <jsp-version>2.0</jsp-version>
?????? <short-name>Mytaglib</short-name>
?????? <uri></uri>
......
<tag>
???????? <description>Hello Simple Tag</description>
???????? <name>HelloSimpleTag</name>
???????? <tag-class>com.newould.taglib.HelloSimpleTag</tag-class>
???????? <body-content>empty</body-content>
?????? </tag>
</taglib>
第三步:編寫Jsp網頁
HelloSimpleTag.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib uri="/WEB-INF/tlds/MyTaglib.tld" prefix="mytag" %>
<html>
<head>
<title>HelloSimpleTag.jsp</title>
</head>
<body>
<h2>Simple Tag 標簽</h2>
<h1><mytag:HelloSimpleTag /></h1>
</body>
</html>
=================================================================
例2:AddSimpleTag標簽
第一步:制作標簽處理類
AddSimpleTag.java
package com.newould.taglib;
import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class AddSimpleTag extends SimpleTagSupport {
private int num1 = 0;
private int num2 = 0;
public void setNum1(int num1) {
????? this.num1 = num1;
}
public void setNum2(int num2) {
????? this.num2 = num2;
}
public void doTag() throws JspException, IOException {
????? JspContext ctx = getJspContext();
????? JspWriter out = ctx.getOut();
???
????? int sum = num1 + num2;
????? ctx.setAttribute("sum", Integer.toString(sum));
??
????? out.println(num1 + " + " + num2 + " = " + sum);
}
}
第二步:編寫標簽性質文件
MyTaglib.tld
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="
?????? xmlns:xsi="
?????? xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
?????? version="2.0">
????
?????? <description>My Taglib by JavaWorld.com.tw</description>
?????? <tlib-version>1.0</tlib-version>
?????? <jsp-version>2.0</jsp-version>
?????? <short-name>Mytaglib</short-name>
?????? <uri></uri>
......
<tag>
???????? <description>Add Simple Tag</description>
???????? <name>Add</name>
???????? <tag-class>com.newould.taglib.AddSimpleTag</tag-class>
???????? <body-content>empty</body-content>
??????
???????? <attribute>
?????????? <name>num1</name>
?????????? <required>true</required>
?????????? <rtexprvalue>true</rtexprvalue>
???????? </attribute>
???????? <attribute>
?????????? <name>num2</name>
?????????? <required>true</required>
?????????? <rtexprvalue>true</rtexprvalue>
???????? </attribute>
????????????
?????? </tag>
???
</taglib>
第三步:編寫Jsp網頁
AddSimpleTag.jsp
%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib uri="/WEB-INF/tlds/MyTaglib.tld" prefix="mytag" %>
<html>
<head>
<title>AddSimpleTag.jsp</title>
</head>
<body>
<h2>AddSimpleTag 標簽</h2>
<h1><mytag:Add num1="5" num2="9" /></h1>
最后結果:${sum}
</body>
</html>
=================================================================
例3 RepeatSimpleTag標簽
RepeatSimpleTag標簽 主要是用來重復顯示某段文字。
這個例子在處理上與前兩個例子有點不同
第一步:制作標簽處理類
RepeatSimpleTag.java
package com.newould.taglib;
import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class RepeatSimpleTag extends SimpleTagSupport {
private int count = 0;//重復的次數
private JspFragment fragment;//重復的內容
public void setCount(int count) {
????? this.count = count;
}
public void setFragment(JspFragment fragment) {
????? this.fragment = fragment;
}
public void doTag() throws JspException, IOException {
????? JspContext ctx = getJspContext();
????? JspWriter out = ctx.getOut();
???
????? for(int i=0 ; i<count ; i++) {
?????? fragment.invoke(null);//表示將fragment的內容顯示出來
????? }
}
}
第二步:編寫標簽性質文件
MyTaglib.tld
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="
?????? xmlns:xsi="
?????? xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
?????? version="2.0">
????
?????? <description>My Taglib by JavaWorld.com.tw</description>
?????? <tlib-version>1.0</tlib-version>
?????? <jsp-version>2.0</jsp-version>
?????? <short-name>Mytaglib</short-name>
?????? <uri></uri>
......
<tag>
???????? <description>Repeate Simple Tag</description>
???????? <name>Repeat</name>
???????? <tag-class>com.newould.taglib.RepeatSimpleTag</tag-class>
???????? <body-content>empty</body-content>
??????
???????? <attribute>
?????????? <name>count</name>
?????????? <required>true</required>
?????????? <rtexprvalue>true</rtexprvalue>
???????? </attribute>
???????? <attribute>
?????????? <name>fragment</name>
?????????? <required>true</required>
?????????? <fragment>true</fragment>
???????? </attribute>
?????? </tag>????
???
</taglib>
注意:<fragment>true</fragment>,一定要這樣設定fragment屬性。
第三步:編寫Jsp網頁
RepeatSimpleTag.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib uri="/WEB-INF/tlds/MyTaglib.tld" prefix="mytag" %>
<html>
<head>
<title>RepeatSimpleTag.jsp</title>
</head>
<body>
<h2>RepeatSimpleTag 標簽</h2>
<mytag:Repeat count="5" >
<jsp:attribute name="fragment">
重復執行 ....<br>
</jsp:attribute>
</mytag:Repeat>
</body>
</html>
=================================================================
DynamicAttributes接口
只要制作的標簽實現了DynamicAttributes接口就有動態屬性的功能。
例如:我們要做多個數的累加運算,則AddSimpleTag標簽就可以通過實現DynamicAttributes接口就可以實現了.
實現DynamicAttributes接口,必須實現setDynamicAttributes()方法,此方法用來接收動態屬性.
舉例:第一步:制作標簽處理類
package com.newould.taglib;
import java.io.*;
import java.util.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class DynamicAdd extends SimpleTagSupport implements DynamicAttributes {
//用來接收動態屬性
private ArrayList keys = new ArrayList();
private ArrayList values = new ArrayList();
public void doTag() throws JspException, IOException {
????? JspContext ctx = getJspContext();
????? JspWriter out = ctx.getOut();
???
????? float num = 0;
????? float sum = Float.parseFloat((String)values.get(0));
????? out.print(sum);
???
????? for (int i = 1 ; i < keys.size() ; i++) {
?????? String temp = (String)values.get(i);
?????? num = Float.parseFloat(temp);
?????? sum = sum + num;
?????? out.print(" + " + num);
????? }
???
????? out.print(" = " + sum);
????? ctx.setAttribute("sum", Float.toString(sum));
???
}
public void setDynamicAttribute(String uri, String name, Object value) throws JspException {
????? keys.add(name);
????? values.add(value);
}
}
第二步:編寫標簽性質文件
<tag>
???????? <description>DynamicAttribute</description>
???????? <name>DynAdd</name>
???????? <tag-class>com.newould.taglib.DynamicAdd</tag-class>
???????? <body-content>empty</body-content>
???????? <dynamic-attributes>true</dynamic-attributes>
?????? </tag>????
第三步:編寫Jsp網頁 <html> <h2>Tag File 范例</h2> <JSPBook:DynAdd num1="111" num2="222" num3="444" > <jsp:attribute name="great"> </body> struts2.0簡單的例子 將該文件拷貝到步驟1中制作的目錄struts2\example中。 使用下面的命令編譯這個java文件: 將該文件拷貝到步驟1中制作的目錄struts2\WEB-INF中。 struts.properties文件: Struts2與Struts1的對比 本文轉自:http://blog.csdn.net/paulsen1980/archive/2007/05/18/1614643.aspx
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib prefix="JSPBook" tagdir="/WEB-INF/tags/" %>
<%@ taglib prefix="c" uri="
<head>
<title>CH16 - DynAdd.jsp</title>
</head>
<body>
????? <font color="red">SUM:${sum} ...</red>
</jsp:attribute>
<jsp:attribute name="less">
????? <font color="blue">SUM:${sum} ...</red>
</jsp:attribute>
</JSPBook:DynAdd>
</html>
JSP2.0中為了簡化標簽的復雜性,增加了制作Simple Tag的標簽類SimpleTagSupport類。
SimpleTagSupport類是實現SimpleTag接口的。它只需要實現一個doTag()方法即可,而不需要一堆回傳值。
今天在apache網站上無意中看到了struts項目2.0.1正式發布了,懷著欣喜的心情我下載了stuts2.0.1完整包。 Struts2.0.1是struts項目和WebWork2.2項目的合并版本,集成了兩大流行MVC框架的優點,對struts框架來說是一個大的提升,同時也更大程度地簡化了開發人員的開發過程。我簡單地研究了一下這個新版本,現在給大家介紹一個入門級的小例子,希望能對學習這個新版本的朋友有點幫助。
這個例子完成了一次URL調用返回結果頁面的過程。
首先,要從apache網站上下載struts2.0.1的完整包(可以從這里下載:http://struts.apache.org/downloads.html),解壓后需要找到下列幾個文件:
commons-logging-1.0.4.jar
freemarker-2.3.4.jar
ognl-2.6.7.jar
struts2-api-2.0.1.jar
struts2-core-2.0.1.jar
xwork-2.0-beta-1.jar
然后,我們就開始做第一個例子,我們就使用經典的“HelloWorld”的名字吧!
1. 制作目錄結構
如下圖所示:
stuts2是web應用的根目錄。
2. 拷貝引用文件
將上面列舉的jar文件拷貝到步驟1中制作的目錄struts2\WEB-INF\lib中。
3. 制作jsp文件HelloWorld.jsp<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h2><s:property value="message" /></h2>
</body>
</html>
4.制作java文件HelloWorld.javapackage example;
/**
* <code>Set welcome message.</code>
*/
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorld extends ActionSupport {
public static final String MESSAGE = "Struts is up and running ...";
public String execute() throws Exception {
setMessage(MESSAGE);
return SUCCESS;
}
private String message;
public void setMessage(String message){
this.message = message;
}
public String getMessage() {
return message;
}
}
set CLASSPATH=yourdirectory\xwork-2.0-beta-1.jar
javac HelloWorld.java
將編譯后的HelloWorld.class文件拷貝到步驟1中制作的目錄struts2\WEB-INF\classes\example中。
5.制作web應用的描述文件web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
?????? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?????? xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
?????? version="2.4">
<display-name>Struts Blank</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
6.制作MANIFEST.MF文件(從其它地方隨便找一個即可)
將該文件拷貝到步驟1中制作的目錄struts2\META-INF中。
7.制作struts配置文件struts.xml和struts.properties
struts.xml文件:<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="abc" namespace="/example" extends="struts-default">
<action name="HelloWorld" class="example.HelloWorld">
<result>/example/HelloWorld.jsp</result>
</action>
<!-- Add your actions here -->
</package>
</struts>
struts.devMode = true
struts.enable.DynamicMethodInvocation = false
將這兩個文件拷貝到步驟1中制作的目錄struts2\ WEB-INF\classes中。
好了整個例子的文件我們都搞定了。
最后,你可以將制作好的web應用struts2拷貝到tomcat下運行。
訪問http://localhost:8080/struts2/example/HelloWorld.action如果能夠看到頁面上的“Struts is up and running ...”提示信息說明你的例子是正確的。
(轉自:javaeye)
Action 類:
? Struts1要求Action類繼承一個抽象基類。Struts1的一個普遍問題是使用抽象類編程而不是接口。
? Struts 2 Action類可以實現一個Action接口,也可實現其他接口,使可選和定制的服務成為可能。Struts2提供一個ActionSupport基類去實現 常用的接口。Action接口不是必須的,任何有execute標識的POJO對象都可以用作Struts2的Action對象。
線程模式:
? Struts1 Action是單例模式并且必須是線程安全的,因為僅有Action的一個實例來處理所有的請求。單例策略限制了Struts1 Action能作的事,并且要在開發時特別小心。Action資源必須是線程安全的或同步的。
? Struts2 Action對象為每一個請求產生一個實例,因此沒有線程安全問題。(實際上,servlet容器給每個請求產生許多可丟棄的對象,并且不會導致性能和垃圾回收問題)
Servlet 依賴:
? Struts1 Action 依賴于Servlet API ,因為當一個Action被調用時HttpServletRequest 和 HttpServletResponse 被傳遞給execute方法。
? Struts 2 Action不依賴于容器,允許Action脫離容器單獨被測試。如果需要,Struts2 Action仍然可以訪問初始的request和response。但是,其他的元素減少或者消除了直接訪問HttpServetRequest 和 HttpServletResponse的必要性。
可測性:
? 測試Struts1 Action的一個主要問題是execute方法暴露了servlet API(這使得測試要依賴于容器)。一個第三方擴展--Struts TestCase--提供了一套Struts1的模擬對象(來進行測試)。
? Struts 2 Action可以通過初始化、設置屬性、調用方法來測試,“依賴注入”支持也使測試更容易。
捕獲輸入:
? Struts1 使用ActionForm對象捕獲輸入。所有的ActionForm必須繼承一個基類。因為其他JavaBean不能用作ActionForm,開發者經常創建多余的類捕獲輸入。動態Bean(DynaBeans)可以作為創建傳統ActionForm的選擇,但是,開發者可能是在重新描述(創建)已經存在的JavaBean(仍然會導致有冗余的javabean)。
? Struts 2直接使用Action屬性作為輸入屬性,消除了對第二個輸入對象的需求。輸入屬性可能是有自己(子)屬性的rich對象類型。Action屬性能夠通過 web頁面上的taglibs訪問。Struts2也支持ActionForm模式。rich對象類型,包括業務對象,能夠用作輸入/輸出對象。這種 ModelDriven 特性簡化了taglib對POJO輸入對象的引用。
表達式語言:
? Struts1 整合了JSTL,因此使用JSTL EL。這種EL有基本對象圖遍歷,但是對集合和索引屬性的支持很弱。
? Struts2可以使用JSTL,但是也支持一個更強大和靈活的表達式語言--"Object Graph Notation Language" (OGNL).
綁定值到頁面(view):
? Struts 1使用標準JSP機制把對象綁定到頁面中來訪問。
? Struts 2 使用 "ValueStack"技術,使taglib能夠訪問值而不需要把你的頁面(view)和對象綁定起來。ValueStack策略允許通過一系列名稱相同但類型不同的屬性重用頁面(view)。
類型轉換:
? Struts 1 ActionForm 屬性通常都是String類型。Struts1使用Commons-Beanutils進行類型轉換。每個類一個轉換器,對每一個實例來說是不可配置的。
? Struts2 使用OGNL進行類型轉換。提供基本和常用對象的轉換器。
校驗:
? Struts 1支持在ActionForm的validate方法中手動校驗,或者通過Commons Validator的擴展來校驗。同一個類可以有不同的校驗內容,但不能校驗子對象。
? Struts2支持通過validate方法和XWork校驗框架來進行校驗。XWork校驗框架使用為屬性類類型定義的校驗和內容校驗,來支持chain校驗子屬性
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee
<display-name>
struts2</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
其中,綠底色的部分是通用的部分。
2、struts.xml文件
這個文件的配置是最為重要的,也是比較容易出問題的地方,初學者對其中很多的參數不太明白,導致調試時候經常出錯。下面先給出一個配置的代碼:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"
<struts>
<include file="struts-default.xml"/>
<package name="package1" extends="struts-default">
<action name="Hello" class="tutorial.HelloWorld">
<result>HelloWorld.jsp</result>
</action>
<action name="HelloWorld" class="package1.HelloWorld">
<result>HelloWorld.jsp</result>
</action>
</package>
</struts>
1)對于<include file="struts-default.xml"/>這行代碼,可以要也可以不要。
2)package的name是可以虛構的,并不一定要在classes目錄下要有一個與這個name名對應的包名;像上面的配置文件中的name="package1"可以隨便改成name="aaa"等是不影響結果的,只不過這個package名可以使得多個action聚合在一起,對大型的模塊設計的時候是很有幫助的。
3)<action name="HelloWorld" class="package1.HelloWorld">中的HelloWorld這個name并不一定要與package1包中的類名相同,比如<action name="Hello" class="tutorial.HelloWorld">這樣兩個名字完全不一樣是可以的,但是"Hello"這個name必須與輸入的jsp頁面里面的action內容是一致的,如<s:form action="Hello">
4)從上面的配置文件可以看出,在classes目錄下面有兩個包,一個是tutorial,一個是package1。
3、struts.properties文件
這個文件最簡單,它與struts.xml文件一樣,都是位于classes目錄下面。其內容為:
struts.devMode = true
struts.enable.DynamicMethodInvocation = false的
4、建議初學者先看看為Struts 2.0做好準備這篇文章,這里每個步驟講的非常的詳細,但是有些細節作者沒有寫出來,讓很多初學者調試的時候出很多錯誤,比如The requested resource (/項目名/HelloWorld) is not available.,java.lang.NullPointerException等等。
1)關于工具web tools platform,這是一個eclipse集成了很多web開發下所需工具的一個比較好的平臺,它在eclipse的網站下面http://www.eclipse.org/webtools/有下載。打開這個頁面的右邊download欄目下面有wtp的下載,點擊這個去下載,如果不行,就再仔細找找了。
2)如果出現The requested resource (/項目名/HelloWorld) is not available.的話,就仔細找找看是不是輸入的時候把配置文件等等地方寫錯了,對于初學者最容易把其中的字母搞錯,比如struts是不寫成了其它的形式,反正出現這個錯誤就是說訪問的資源不存在,那就肯定要么是配置文件出錯了,要么是你的類文件沒有放在classes目錄下面,無外這兩種情況。錯了不要緊,沒有錯誤,哪會有進步呢。
3)如果你真的發現什么錯誤都沒有,但就是盡管調試了半天還是調試不成功,那就考慮你的JDK版本是不是和你下載的wtp搭配了,建議把原來低版本的JDK卸載,裝上新去下載的JDK,寫這篇博客時,最新版本是jdk-1_5_0_10。如果還不行,你就把tomcat或者其它的web服務器換版本,總之要不怕錯誤和失敗,要勤于不斷的調試。
啟動服務:
1通過控制面板里的服務選項
2通過命令行
net start mysql??? ->啟動數據庫
net stop mysql???? ->關閉數據庫
連接數據庫
mysql -u用戶名 -p密碼
查看服務器上當前存在什么數據庫
show databases;
創建數據庫
create database 數據庫名;
如我要創建一個名為gbook的數據庫
create database gbook;
刪除數據庫
drop database 數據庫名;
如:
drop database gbook;
選擇要使用的數據庫
use 要使用的數據庫名;
如:
use gbook;
查看當前使用的數據庫中存在的表
show tables;
創建一個數據庫表
create table person
{
??? id varchar(32) not null primary key,
??? name varchar(20) not null,
??? password varchar(20) not null
};
顯示數據庫中某個表的結構
describe 表名;
導入數據庫創建腳本文件命令(如D:\mysql.sql)
先建立一個空數據庫->選擇它->導入腳本命令 如:
create database gbook;
source d:/mysql.sql;
刪除表
drop table 表名;
刪除數據庫中某表的全部記錄
delete from 表名;
如:
delete from gbook;
向表中插入數據(以前面的person表為例)
insert into 表名 values(對應的數據值);
如:
insert into person values('LXH','李興華','moolee');
更新表中的數據
update person set password='zzzzz';
查看當前數據庫服務器的版本
select version();
查看數據庫服務器上的所有用戶
select user();
查看當前日期時間
select now();
使用load命令向數據庫的表中插入數據
load data local infile '路徑' into table 表名;
如:
load data local infile 'f:/person.txt' into table person;
person.txt中則單純的列出了許多表中的對應數據,如:
mldn???????? 陳華 1569
god????????? 黃雨 123456
admin??????? 陳天賜 admin888
列出表中所有記錄
select * from 表名;
如:
select * from person;
從表中只選擇特定的行
select * from person where id='lxh';
select * from person where id='lxh' and name='李興華';
選擇表中特定的列(可以是多列哦,記得以,分開)
select name from person;
用distinct檢索出每個唯一的輸出記錄
select distinct name from person;
計算總的記錄數
select count(*) from person;
count()函數是查詢數據庫中的指定表有多少列