參考資料:
1.How to use HttpURLConnection POST data to web server?
2.How to connect Android with PHP, MySQL (如果你是用PHP+MySQL可參考,而我是參考此篇的寫法)
如果你還不懂AsyncTask,以下是必看文章
3.使用AsyncTask執行非同步任務
4.Android中AsyncTask的使用與源碼分析
以下假設是在順利執行的情況下
步驟:
Step 1.先在Eclipse建立Android專案(Android版本我是用4.3),建立完成後,先新增一個class名為JSONParser,程式碼如下:
P.S原則上我是參考資料2的做法,只是改成java的HttpURLConnection
JSONParser.java
package com.androidhive.jsonparsing;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class JSONParser {
static JSONObject jObj = null;
static String json = "";
// constructor
public JSONParser() {}
// getJSONFromUrl方法為單存取資料用
public JSONObject getJSONFromUrl(String temp_url) {
HttpURLConnection conn = null;
// Making HTTP request
try {
// 建立連線
URL url =new URL(temp_url);
conn = (HttpURLConnection)url.openConnection();
//===============================
//下面註解兩行可有可無
//conn.setReadTimeout(10000);
//conn.setConnectTimeout(15000);
//===============================
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
reader.close();
json = sb.toString();
}catch (Exception e) {
System.out.println("getJSONFromUrl Exception Error :"+e);
}finally {
if (conn != null) {
conn.disconnect();
}
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "getJSONFromUrl Error parsing data " + e.toString());
}
return jObj;
}
public JSONObject makeHttpRequest(String temp_url, String method, String urlParameters){
HttpURLConnection conn = null;
try{
// 建立連線
URL url =new URL(temp_url);
conn = (HttpURLConnection)url.openConnection();
//===============================
//下面註解兩行可有可無
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
//===============================
conn.setRequestMethod(method); //URL 請求的方法
//發送表單類型資料,設定請求標頭
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//設定要傳送的資料長度
conn.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));
//設定內容語言
conn.setRequestProperty("Content-Language", "zh-tw");
conn.setUseCaches (false);
conn.setDoInput(true);
conn.setDoOutput(true);
//Send request
DataOutputStream wr = new DataOutputStream (conn.getOutputStream ());
wr.writeBytes (urlParameters);
wr.flush ();
wr.close ();
//Get Response
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line;
StringBuffer sb = new StringBuffer();
while((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
reader.close();
json = sb.toString();
}catch (Exception e) {
System.out.println("makeHttpRequest Error:"+e.toString());
}finally {
if (conn != null) {
conn.disconnect();
}
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "getJSONFromUrl Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
}
Step 2.再來是直接使用剛剛建立好的JSONParser類別來傳資料取資料,程式碼如下:
P.S以下有些程式碼您必須自行修改,別照抄
Item2.java
package com.android.school;
import com.androidhive.jsonparsing.JSONParser;
import android.os.AsyncTask; //處理非同步
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.app.Activity;
import android.os.Bundle;
public class Item2 extends Activity {
//JSON節點名稱名稱,
String T_temp1= "test";
//JSON節點名稱,也就是要取資料的欄位名稱,必須要以網頁回傳的為主,如:"欄位1,欄位2,欄位3..."
String get_str="test1,test2,test3";
JSONParser jParser; //剛剛建立的JSONParser類別
JSONObject json;
JSONArray contacts = null;
Item2_AT I_AT; //非同步AsyncTask類別
EditText txt2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_item2);
Button B1=(Button)findViewById(R.id.button1);
B1.setOnClickListener(B1_Click);
txt2=(EditText)findViewById(R.id.editText2);
//假如你是連結自己的IIS必須寫10.0.2.2:port,因為預設iis的port為80
new Item2_AT().execute("url","http://10.0.2.2:80/TEST/TEST.aspx");
}
private OnClickListener B1_Click=new OnClickListener(){
public void onClick(View v){
I_AT=new Item2_AT();
System.out.println("return="+I_AT.execute("select","http://10.0.2.2:80/TEST/TEST.aspx"));
}
};
class Item2_AT extends AsyncTask<String, Integer, Integer>{
//================================================================
//必須建立
//execute("http://10.0.2.2:80/TEST/TEST.aspx")會傳給doInBackground
//doInBackground(String... param)代表傳入的值可以帶入很多個參數 如:new Item2_AT().execute("1","2");
@Override
protected Integer doInBackground(String... param) {
int Judge;
//get Data 單存取資料
if (param[0].equals("url")==true){
// Creating JSON Parser instance
jParser = new JSONParser();
// getting JSON string from URL
json = jParser.getJSONFromUrl(param[1]);
}else if (param[0].equals("select")==true){
String urlParameters="0";
try{
urlParameters ="sid="+URLEncoder.encode(txt2.getText().toString(), "UTF-8");
Judge=1;
}catch(UnsupportedEncodingException e){
System.out.println("UnsupportedEncodingException error:"+e.toString());
Judge=0;
}
if (Judge==1){
// Creating JSON Parser instance
jParser = new JSONParser();
//param[1] 儲存的是url網址
json = jParser.makeHttpRequest(param[1],"POST",urlParameters);
}
}
return null;
}
@Override
protected void onPostExecute(Integer result) {
//此method是在doInBackground完成以後,才會呼叫的
super.onPostExecute(result);
EditText txt=(EditText)findViewById(R.id.editText1);
//show Data
String str_temp;
try {
String[] T_temp1f=get_str.split(","); //分割字串
// Getting Array of Contacts
contacts = json.getJSONArray(T_temp1);
// looping through All Contacts
for(int i = 0; i < contacts.length(); i++){
str_temp="";
JSONObject c = contacts.getJSONObject(i);
for (int x=0;x<T_temp1f.length;x++){
if (x==T_temp1f.length-1){
str_temp=str_temp + c.getString(T_temp1f[x])+";\n";
}else{
str_temp=str_temp + c.getString(T_temp1f[x])+",";
}
}
txt.setText(txt.getText()+ str_temp);
}
} catch (JSONException e) {
txt.setText("JSON error:"+e.toString());
System.out.println("JSON error:"+e.toString());
}catch (Exception e) {
txt.setText("Error:"+e.toString());
System.out.println("Error:"+e.toString());
}
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
//=============================================================
}
}
Step 3.建立要連結的網頁,因為我是連結ASP.NET的網頁,所以已ASP.NET為主,如果你沒有測試的網頁,可以試著連結這個網頁取資料 http://api.androidhive.info/contacts/ ,如果你是用測試的網頁 Android 部分就改用這個方法去取得資料getJSONFromUrl,但Android程式碼的寫法就要改成這篇的寫法 How to connect Android with PHP, MySQL ,因為我的程式碼是用他的來改過的,所以有些部分就不一樣
P.S以下程式碼,可以先看看此篇會比較清楚 ASP.NET 產生 JSON 資料
TEST.aspx.vb
Imports System
Imports System.Data
Imports System.Data.SqlClient
'Json.NET相關的命名空間
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Partial Class FSA_Student
Inherits System.Web.UI.Page
Dim strsqlCon As String = "Data Source=.\SQLEXPRESS;Initial Catalog=資料庫名稱;Trusted_Connection=True;"
Dim str_sql As String
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Dim p_value As String = Nothing
'sql指令
str_sql = "Select test1,test2,test3 from test where test1=@test1"
If Not Request.Form("sid") Is Nothing Then
p_value = Request.Form("sid")
ELSE
p_value = "0" '沒有接收到值,預設先指定一個參數值
End If
'function queryDataTable(sql指令, 參數名稱, 參數值) 方法執行完會回傳DataTable
Dim dt As DataTable = queryDataTable(str_sql, "@test1", p_value)
Dim str_json As String = JsonConvert.SerializeObject(dt)
str_json = str_json.Replace(" ", "") '將空白取代掉
Response.Write("{" & Chr(34) & "test" & Chr(34) & ":" & str_json & "}")
End If
End Sub
Function queryDataTable(ByVal sql_str As String, ByVal pv As String, ByVal pv_value As String) As DataTable
Dim sql_p() As String = Nothing
sql_p = pv.Split(",") 'sql字串中的參數
Dim sqlvalue_p() As String = Nothing
sqlvalue_p = pv_value.Split(",") 'sql字串中的參數值
Dim ds As New DataSet()
Using conn As New SqlConnection(strsqlCon)
Dim command As SqlCommand = New SqlCommand(str_sql, conn)
Dim x_end As Integer = sql_p.Length - 1
For x As Integer = 0 To x_end
command.Parameters.AddWithValue(sql_p(x), sqlvalue_p(x)) '讓ADO.NET自行判斷型別轉換
Next
Dim da As New SqlDataAdapter()
da.SelectCommand = command
da.Fill(ds)
End Using
If ds.Tables.Count > 0 Then
Return ds.Tables(0)
Else
Return New DataTable()
End If
End Function
End Class
2013年10月10日 星期四
2013年2月1日 星期五
Java 實作Vector動態陣列(插入、移除)
本篇用意是想在某些情況下,隨時將資料暫時儲存在陣列中,方便以後做處理用,這時不能用固定的陣列來儲存資料,因為資料隨時可能會儲存到陣列中,這時必須使用動態陣列來儲存資料。
PS.有興趣者自行將程式碼複製下來實際run過一次
前置作業:
新建 test_vector.java 檔
程式碼如下:
test_vector.java
import java.util.*;
import java.io.*;
public class test_vector {
public static Vector Arr_v=new Vector();
public test_vector() {
}
public static void main(String[] args){
try {
System.out.println("實作Vector動態陣列(插入、移除)...");
BufferedReader keyin;
keyin=new BufferedReader(new InputStreamReader(System.in));
boolean BStop=true;
System.out.println("指令:close(關閉結束);length(印出陣列長度);out data(輸出陣列資料);remove(移除);\nPS.指令輸入英文即可");
while(BStop){
System.out.print("請輸入資料或輸入指令:");
String str_data=keyin.readLine();
if (str_data.equals("length")){
System.out.println("Arr_v長度:"+Arr_v.size());
}else if (str_data.equals("close")){
BStop=false;
System.out.println("End...");
}else if (str_data.equals("out data")){
System.out.println("================");
System.out.println("輸出資料...");
for (int y=0;y<Arr_v.size();y++){
//((Vector)Arr_v.elementAt(y)).elementAt(1).toString() //印出(輸出)二維陣列的資料
//印出(輸出)一維陣列的資料
System.out.println("Arr_v["+y+"]="+Arr_v.elementAt(y).toString());
}
System.out.println("================");
}else if (str_data.equals("remove")){
synchronized(Arr_v){
try{
System.out.print("請輸入要移除的陣列(從0開始):");
//Integer.parseInt 將輸入的值轉換為int(整數),並丟入x_index變數中
int x_index= Integer.parseInt(keyin.readLine());
//remove 移除所指定的陣列,並將移除的值強制轉換為String(字串),
String str_temp=(String)Arr_v.remove(x_index);
System.out.println("移除Arr_v["+x_index+"]="+str_temp);
}catch(Exception e) {
System.out.println(e.toString());
}
}
}else{
synchronized(Arr_v){
Arr_v.add(Arr_v.size(),str_data); //將資料放入到Vector中
}
}
}
}catch(IOException e){
System.out.println("Error IOException:"+e.toString());
}catch(Exception e) {
System.out.println("Error Exception:"+e.toString());
}
}
}
輸出結果如下:
PS.有興趣者自行將程式碼複製下來實際run過一次
前置作業:
新建 test_vector.java 檔
程式碼如下:
test_vector.java
import java.util.*;
import java.io.*;
public class test_vector {
public static Vector Arr_v=new Vector();
public test_vector() {
}
public static void main(String[] args){
try {
System.out.println("實作Vector動態陣列(插入、移除)...");
BufferedReader keyin;
keyin=new BufferedReader(new InputStreamReader(System.in));
boolean BStop=true;
System.out.println("指令:close(關閉結束);length(印出陣列長度);out data(輸出陣列資料);remove(移除);\nPS.指令輸入英文即可");
while(BStop){
System.out.print("請輸入資料或輸入指令:");
String str_data=keyin.readLine();
if (str_data.equals("length")){
System.out.println("Arr_v長度:"+Arr_v.size());
}else if (str_data.equals("close")){
BStop=false;
System.out.println("End...");
}else if (str_data.equals("out data")){
System.out.println("================");
System.out.println("輸出資料...");
for (int y=0;y<Arr_v.size();y++){
//((Vector)Arr_v.elementAt(y)).elementAt(1).toString() //印出(輸出)二維陣列的資料
//印出(輸出)一維陣列的資料
System.out.println("Arr_v["+y+"]="+Arr_v.elementAt(y).toString());
}
System.out.println("================");
}else if (str_data.equals("remove")){
synchronized(Arr_v){
try{
System.out.print("請輸入要移除的陣列(從0開始):");
//Integer.parseInt 將輸入的值轉換為int(整數),並丟入x_index變數中
int x_index= Integer.parseInt(keyin.readLine());
//remove 移除所指定的陣列,並將移除的值強制轉換為String(字串),
String str_temp=(String)Arr_v.remove(x_index);
System.out.println("移除Arr_v["+x_index+"]="+str_temp);
}catch(Exception e) {
System.out.println(e.toString());
}
}
}else{
synchronized(Arr_v){
Arr_v.add(Arr_v.size(),str_data); //將資料放入到Vector中
}
}
}
}catch(IOException e){
System.out.println("Error IOException:"+e.toString());
}catch(Exception e) {
System.out.println("Error Exception:"+e.toString());
}
}
}
輸出結果如下:
2012年11月17日 星期六
Java 實作JTable及取JTable欄位值等
本篇簡單實作JTable以及如何取得JTable欄位值,如有補充會再加上。
如果有需要請自行複製程式碼,自行修改!!
(一)前置準備:
1.需有資料庫mysql
2.需要有Java JDBC資料庫的驅動
(不會作請自行參考JAVA安裝MySQL驅動程式)
(二)實作:
test_db.java
test.java
(三)程式碼如下:
不懂看註解,再不懂請自行查資料、翻翻手邊的書吧!!
test_db.java:
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class test_db {
private Connection con = null; //Database objects
//連接object
private Statement stat = null;
//儲存sql執行的結果
private ResultSet rs = null;
ResultSetMetaData rsmd;
private PreparedStatement pst = null;
JTable New_DJT;//儲存資料用
public test_db() {
}
//開啟連結
public int jdbcmysql() {
try {
Class.forName("com.mysql.jdbc.Driver");
//註冊driver
con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/test","test","test");
//"jdbc:mysql://localhost:3306/test"
// localhost 是主機名稱,3306是mysql資料庫port(自己看自己的電腦mysql資料庫的port為多少),test 是資料庫名稱,test是帳號,root 是密碼,con 是取得連線
return 1;
}
catch(ClassNotFoundException e)
{
System.out.println("DriverClassNotFound :"+e.toString());
return -1;
}//有可能會產生sqlexception
catch(SQLException x) {
System.out.println("Exception :"+x.toString());
return 0;
}
}
//Select Table Data
//YND是0只單存判斷是否有資料,如果是1代表判斷是否有資料並且要取資料
public int STD(String selectSQL,int YND){
try{
stat = (Statement) con.createStatement();
rs = stat.executeQuery(selectSQL); //executeQuery()執行sql指令
rs.last(); //將游標移到最後一筆資料
int ResultCount = rs.getRow(); //rs.getRow()取得資料列,找不到資料會是0 有資料會>=1
rs.beforeFirst(); //回到第一個ResultSet
//假如判斷是否有資料並且取資料
if (ResultCount>=1 && YND==1){
rsmd = rs.getMetaData(); //取得中介資料,如資料庫的欄位名稱.欄位數.欄位型態等
int cx=rsmd.getColumnCount();//取得欄位數
System.out.println(cx);
//參考資料:http://www.interinfo.com.tw/edoc/ch20/frontline.htm
//Vector是一種能夠自動長大或縮小的陣列形態,其最大的用途就是彌補Array 的彈性不足,在宣告的時後,可以不必宣告其大小,等到物件一個個的加入時,容量不足時就會自動加大容量。
Vector V_CNames=new Vector();//表頭名稱
for(int x=1;cx>=x;x++){
//設定表頭名稱
V_CNames.addElement(("x"+String.valueOf(x)));
}
Vector V_RData=new Vector();//儲存資料庫撈出來的所有資料列
while(rs.next()){
Vector New_RD=new Vector();
for(int x=1;cx>=x;x++){
//rs.getString(數值)取得rs中的值,並丟入New_DR,形成一行資料列
New_RD.addElement(rs.getString(x));
}
V_RData.addElement(New_RD);//New_RD加入到V_RData
}
//New_DJT=new JTable(資料列,表頭);
New_DJT=new JTable(V_RData,V_CNames);
JScrollPane jsp;//宣告一個滾動槓(捲動容器)
New_DJT.setShowVerticalLines(true);//設定是否顯示表格的垂直分割線
New_DJT.setShowHorizontalLines(true);//設定是否顯示表格的水平分割線
jsp=new JScrollPane(New_DJT);//給JTabel表格加上滾動槓(捲動容器)
JFrame myFrame=new JFrame("取得資料庫表格測試");
myFrame.setSize(500,200);
myFrame.setLocation(200,200);
// 把 table 放進JFrame
myFrame.getContentPane().add(jsp);
myFrame.setVisible(true);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//=============================
int row=New_DJT.getRowCount(); //取得列數
int col=New_DJT.getColumnCount(); //取得行數
System.out.println("col欄位數:"+col+"; row列數:"+row);
for(int i=0;row>i;i++){
for(int j=0;col>j;j++){
if (j==(col-1)){
//印出值並換行
System.out.println((String)New_DJT.getValueAt(i, j)); //取得JTable中的值強制轉換String型態
}else{
//印出值並不換行
System.out.print((String)New_DJT.getValueAt(i, j)+" | ");
}
}
}
}else{
//判斷是否有資料
}
return 1;
}catch(SQLException e){
System.out.println("DropDB Exception :" + e.toString());
return -1;//發生錯誤及異常
/**}finally{
Close();
System.out.println("Close");*/
}
//int ResultCount = rs.getRow();
}
public void Close() {
try
{
if(rs!=null)
{
rs.close();
rs = null;
}
if(stat!=null)
{
stat.close();
stat = null;
}
if(pst!=null)
{
pst.close();
pst = null;
}
}
catch(SQLException e)
{
System.out.println("Close Exception :" + e.toString());
}
}
}
test.java:
public class test {
public test() {
}
public static void main(String[] args){
//test_wf TWF=new test_wf();
test_db t_db=new test_db();
if (t_db.jdbcmysql()==1){
System.out.println("1");
//t_db.STD(sql指令字串,1) 1代表取資料
if(t_db.STD("SELECT * FROM test1",1)==1){
System.out.println("2");
t_db.Close(); //關閉資料庫所有資源
}
}
}
}
結果如下:
如果有需要請自行複製程式碼,自行修改!!
(一)前置準備:
1.需有資料庫mysql
2.需要有Java JDBC資料庫的驅動
(不會作請自行參考JAVA安裝MySQL驅動程式)
(二)實作:
test_db.java
test.java
(三)程式碼如下:
不懂看註解,再不懂請自行查資料、翻翻手邊的書吧!!
test_db.java:
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class test_db {
private Connection con = null; //Database objects
//連接object
private Statement stat = null;
//儲存sql執行的結果
private ResultSet rs = null;
ResultSetMetaData rsmd;
private PreparedStatement pst = null;
JTable New_DJT;//儲存資料用
public test_db() {
}
//開啟連結
public int jdbcmysql() {
try {
Class.forName("com.mysql.jdbc.Driver");
//註冊driver
con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/test","test","test");
//"jdbc:mysql://localhost:3306/test"
// localhost 是主機名稱,3306是mysql資料庫port(自己看自己的電腦mysql資料庫的port為多少),test 是資料庫名稱,test是帳號,root 是密碼,con 是取得連線
return 1;
}
catch(ClassNotFoundException e)
{
System.out.println("DriverClassNotFound :"+e.toString());
return -1;
}//有可能會產生sqlexception
catch(SQLException x) {
System.out.println("Exception :"+x.toString());
return 0;
}
}
//Select Table Data
//YND是0只單存判斷是否有資料,如果是1代表判斷是否有資料並且要取資料
public int STD(String selectSQL,int YND){
try{
stat = (Statement) con.createStatement();
rs = stat.executeQuery(selectSQL); //executeQuery()執行sql指令
rs.last(); //將游標移到最後一筆資料
int ResultCount = rs.getRow(); //rs.getRow()取得資料列,找不到資料會是0 有資料會>=1
rs.beforeFirst(); //回到第一個ResultSet
//假如判斷是否有資料並且取資料
if (ResultCount>=1 && YND==1){
rsmd = rs.getMetaData(); //取得中介資料,如資料庫的欄位名稱.欄位數.欄位型態等
int cx=rsmd.getColumnCount();//取得欄位數
System.out.println(cx);
//參考資料:http://www.interinfo.com.tw/edoc/ch20/frontline.htm
//Vector是一種能夠自動長大或縮小的陣列形態,其最大的用途就是彌補Array 的彈性不足,在宣告的時後,可以不必宣告其大小,等到物件一個個的加入時,容量不足時就會自動加大容量。
Vector V_CNames=new Vector();//表頭名稱
for(int x=1;cx>=x;x++){
//設定表頭名稱
V_CNames.addElement(("x"+String.valueOf(x)));
}
Vector V_RData=new Vector();//儲存資料庫撈出來的所有資料列
while(rs.next()){
Vector New_RD=new Vector();
for(int x=1;cx>=x;x++){
//rs.getString(數值)取得rs中的值,並丟入New_DR,形成一行資料列
New_RD.addElement(rs.getString(x));
}
V_RData.addElement(New_RD);//New_RD加入到V_RData
}
//New_DJT=new JTable(資料列,表頭);
New_DJT=new JTable(V_RData,V_CNames);
JScrollPane jsp;//宣告一個滾動槓(捲動容器)
New_DJT.setShowVerticalLines(true);//設定是否顯示表格的垂直分割線
New_DJT.setShowHorizontalLines(true);//設定是否顯示表格的水平分割線
jsp=new JScrollPane(New_DJT);//給JTabel表格加上滾動槓(捲動容器)
JFrame myFrame=new JFrame("取得資料庫表格測試");
myFrame.setSize(500,200);
myFrame.setLocation(200,200);
// 把 table 放進JFrame
myFrame.getContentPane().add(jsp);
myFrame.setVisible(true);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//=============================
int row=New_DJT.getRowCount(); //取得列數
int col=New_DJT.getColumnCount(); //取得行數
System.out.println("col欄位數:"+col+"; row列數:"+row);
for(int i=0;row>i;i++){
for(int j=0;col>j;j++){
if (j==(col-1)){
//印出值並換行
System.out.println((String)New_DJT.getValueAt(i, j)); //取得JTable中的值強制轉換String型態
}else{
//印出值並不換行
System.out.print((String)New_DJT.getValueAt(i, j)+" | ");
}
}
}
}else{
//判斷是否有資料
}
return 1;
}catch(SQLException e){
System.out.println("DropDB Exception :" + e.toString());
return -1;//發生錯誤及異常
/**}finally{
Close();
System.out.println("Close");*/
}
//int ResultCount = rs.getRow();
}
public void Close() {
try
{
if(rs!=null)
{
rs.close();
rs = null;
}
if(stat!=null)
{
stat.close();
stat = null;
}
if(pst!=null)
{
pst.close();
pst = null;
}
}
catch(SQLException e)
{
System.out.println("Close Exception :" + e.toString());
}
}
}
test.java:
public class test {
public test() {
}
public static void main(String[] args){
//test_wf TWF=new test_wf();
test_db t_db=new test_db();
if (t_db.jdbcmysql()==1){
System.out.println("1");
//t_db.STD(sql指令字串,1) 1代表取資料
if(t_db.STD("SELECT * FROM test1",1)==1){
System.out.println("2");
t_db.Close(); //關閉資料庫所有資源
}
}
}
}
結果如下:
2012年4月11日 星期三
JAVA安裝MySQL驅動程式
Step 1.請先到mysql的官方網站下載JDBC驅動 http://www.mysql.com/downloads/connector/j/
Step 2.下載完後,將資料夾內的mysql-connector-java-5.1.19-bin.jar檔複製,並在此路徑C:\Program Files (x86)\Java\jdk1.7.0_03\jre\lib\ext\下的資料夾貼上mysql-connector-java-5.1.19-bin.jar檔
PS.要看您的JDK版本為何,因為我的JDK版本為第7版,所以必須在jdk1.7.0_03\jre\lib\ext資料夾下貼上mysql-connector-java-5.1.19-bin.jar檔
Step 3.新增環境變數,變數名稱:CLASSPATH 變數值:.;C:\Program Files (x86)\Java\jdk1.7.0_03\jre\lib\ext\mysql-connector-java-5.1.19-bin.jar;,這邊的變數值就是剛剛在Step 2所貼上的mysql-connector-java-5.1.19-bin.jar的位置。
PS1.在我的電腦上按右鍵→內容→如果是系統是XP→切換到「進階」頁籤→環境變數→使用者的環境變數,按下新增→輸入變數名稱、變數值→確定,就可新增環境變數
PS2.在我的電腦上按右鍵→內容→如果是系統是W7→進階系統設定→切換到「進階」頁籤→環境變數→使用者的環境變數,按下新增→輸入變數名稱、變數值→確定,就可新增環境變數
Step 4.接著請參考一般java書上所寫的方法去測試驅動是否有安裝成功
參考網址:http://tw.myblog.yahoo.com/claudehsu/article?mid=2134&prev=2135&next=2133
Step 2.下載完後,將資料夾內的mysql-connector-java-5.1.19-bin.jar檔複製,並在此路徑C:\Program Files (x86)\Java\jdk1.7.0_03\jre\lib\ext\下的資料夾貼上mysql-connector-java-5.1.19-bin.jar檔
PS.要看您的JDK版本為何,因為我的JDK版本為第7版,所以必須在jdk1.7.0_03\jre\lib\ext資料夾下貼上mysql-connector-java-5.1.19-bin.jar檔
Step 3.新增環境變數,變數名稱:CLASSPATH 變數值:.;C:\Program Files (x86)\Java\jdk1.7.0_03\jre\lib\ext\mysql-connector-java-5.1.19-bin.jar;,這邊的變數值就是剛剛在Step 2所貼上的mysql-connector-java-5.1.19-bin.jar的位置。
PS1.在我的電腦上按右鍵→內容→如果是系統是XP→切換到「進階」頁籤→環境變數→使用者的環境變數,按下新增→輸入變數名稱、變數值→確定,就可新增環境變數
PS2.在我的電腦上按右鍵→內容→如果是系統是W7→進階系統設定→切換到「進階」頁籤→環境變數→使用者的環境變數,按下新增→輸入變數名稱、變數值→確定,就可新增環境變數
Step 4.接著請參考一般java書上所寫的方法去測試驅動是否有安裝成功
參考網址:http://tw.myblog.yahoo.com/claudehsu/article?mid=2134&prev=2135&next=2133
訂閱:
文章 (Atom)
