2016年10月11日 星期二

C/C++ call by value, call by address, call by reference

標頭都加上
#include <iostream>
using namespace std;
然後使用dev c++

==============================================

int main()
{
  int i=1;
  cout<< i <<endl;  // print 1
}

==============================================

int main()
{
  int i=1;
  cout<< &i <<endl; // print i address
}

==============================================

int main()
{
  int i=1;
  int &j=i;  //讓j的位址指向i的位址(兩個位址會一樣)
  cout<< j << endl; //print j values (That is i values)
  cout<< &j << endl;  // print j address (That is i address)
}

==============================================

int main()
{
  int i=1;
  int *k=&i; //讓k的變數參照i的位址(兩個位址會不一樣)
  cout << k << endl;  // print k values => i address (所以k變數數值列印出來是i的位址
  cout << &k << endl; // print k address (是指k的位址不關變數i的事情)
  cout << *k << endl; // print i address pointer values (指的是k指標變數所參照i位址的數值)
}

=============================================


2016年10月7日 星期五

eclipse java project 應用於XAMPP MySQL

因為我是第一次用jdbc,所以就在這記錄一些事情


首先下載mysql-connector-java-XXXX-bin.jar

download link:http://dev.mysql.com/downloads/connector/j/


然後add external jars把jar檔放入

之後試著寫一段程式連接
private Connection conn=null; //Database variable
public void PracticeDB()
{
try
{
Class.forName("com.mysql.jdbc.Driver");
//register driver
conn=DriverManager.getConnection("jdbc:mysql://120.127.14.91:3306/test","root","110432008");
}catch(ClassNotFoundException e)
{
System.out.println("ClassNotFoundException:"+e.toString());
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("SQLException:"+e.toString());
}
}
view raw practiceDB hosted with ❤ by GitHub

會發現出現一個錯誤
ClassNotFoundException:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

是因為MYSQL 預設是不允許通過遠端存取資料庫

所以必須在mysql command下指令:

1.改表

use mysql;
select user,host,password from user;

update user set host='%' where user='root';

2.授權法

grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;

或者是特定主機才可以連線

grant all privileges on *.* to 'myuser'@'192.168.1.3' identified by 'mypassword' with grant option;

然後重開mysql,之後就能成功存取了


再來下面是實作結果
package PracticeDB;
import java.sql.*;
public class PracticeDB {
private Connection conn=null; //Database variable
private Statement stat=null;
private ResultSet rs=null;
private PreparedStatement pst=null;
private String dropDbSQL="Drop table User ";
private String createDbSQL="Create table User ( "+ "id Integer" + ", name Varchar(20) "+", passwd Varchar(20))";
//ifNULL 代表如果不是null時跑A,否則是
private String insertDbSQL="insert into User(id,name,passwd) "+"select ifNULL(max(id),0)+1,?,? From User";
private String selectDbSQL="select * from User";
public PracticeDB()
{
try
{
Class.forName("com.mysql.jdbc.Driver");
//register driver
conn=DriverManager.getConnection("jdbc:mysql://120.127.14.91:3306/test","root","110432008");
}catch(ClassNotFoundException e)
{
System.out.println("ClassNotFoundException:"+e.toString());
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("SQLException:"+e.toString());
}
}
public void creatTable()
{
try
{
stat=conn.createStatement();
stat.executeUpdate(createDbSQL);
}catch(SQLException e)
{
System.out.println("create DB SQLException:"+e.toString());
}
finally
{
close();
}
}
private void insertTable(String name, String passwd)
{
try {
pst=conn.prepareStatement(insertDbSQL);
pst.setString(1, name);
pst.setString(2, passwd);
pst.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
close();
}
}
public void selectTable()
{
try
{
stat=conn.createStatement();
rs=stat.executeQuery(selectDbSQL);
System.out.println("ID\t\tName\t\tPAAWORD");
while(rs.next())
{
System.out.println(rs.getInt("id")+"\t\t"+rs.getString("name")+"\t\t"+rs.getString("passwd"));
}
}catch(SQLException e)
{
System.out.println("select table SQLException:"+e.toString());
}
finally
{
close();
}
}
public void dropTable()
{
try
{
stat=conn.createStatement();
stat.executeUpdate(dropDbSQL);
}catch(SQLException e)
{
System.out.println("drop table SQLException:"+e.toString());
}
}
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 SQLException:"+e.toString());
}
}
public static void main(String args[])
{
PracticeDB paracticeDB=new PracticeDB();
paracticeDB.dropTable();
paracticeDB.creatTable();
paracticeDB.insertTable("mark","1234");
paracticeDB.selectTable();
}
}
view raw gistfile1.txt hosted with ❤ by GitHub
reference:
https://blog.yslifes.com/archives/918
https://my.oschina.net/weiweiblog/blog/664373