I. CÀI ĐẶT MÔI TRƯỜNG 1. Cài đặt Java Search google: “jdk download ” Tải về: http:www.oracle.comtechnetworkjavajavasedownloadsjdk8downloads2133151.html 2. Cài đặt genymotion và vitual box (máy ảo trên PC) Search google: “ genymotion download” Link: https:www.genymotion.com Đăng ký và đăng nhập tài khoản: Bấm vào Sign In để tạo một tài khoản Tải về: Tải và cài đặt Genymotion từ trang web trên. Lưu ý là phải đăng nhập vào trang web thì mới tải được. Khuyến cáo nên tải phiên bản Genymotion kèm với VirtualBox (một máy ảo tương tự như VMWare nhưng miễn phí và nguồn mở). Cài đặt vitual box: 3. Cài đặt android studio Search google: “ android studio download” Tải về: https:developer.android.comstudioindex.html Cài đặt android studio: II. CẤU HÌNH SQL SERVER 1. Config SQL Server cho phép kết nối từ xa Mở SQL Server Configuration Manager
Trang 1KẾT NỐI ANDROID – SQLSERVER 2012
Sinh viên thực hiện:
Trang 3http://www.oracle.com/technetwork/java/javase/downloads/jdk8 Cài đặt:
Nhập vào thư mục mà JDK sẽ được cài đặt ra, ở đây tôi đặt là:
C:\DevPrograms\Java\jdk1.8.0_45\
Trang 4Ngay sau khi cài đặt JDK, bộ cài đặt sẽ tiếp tục hỏi bạn vị trí JRE
sẽ được cài ra Ở đây tôi chọn:
C:\DevPrograms\Java\jre.8.0_45\
Java đã được cài đặt thành công
Trang 5Kết quả bạn có được 2 thư mục:
- Cấu hình biến môi trường cho Java:
Nhấp chuột vào This PC, chọn Properties
Trang 7Nhấp New để tạo mới một môi trường tên JAVA_HOME
Nhập vào đường dẫn tới thư mục JDK
Trang 8Variable name: JAVA_HOME
Variable value: C:\DevPrograms\Java\jdk1.8.0_45
Tiếp theo sửa đổi biến môi trường path
Trang 9Thêm vào phía trước giá trị môi trường path:
%JAVA_HOME%\bin;
Trang 10Bạn đã cài đặt và cấu hình Java thành công.
2. Cài đặt genymotion và vitual box (máy ảo trên PC)
- Search google: “ genymotion download”
- Link: https://www.genymotion.com/
- Đăng ký và đăng nhập tài khoản:
Bấm vào Sign In để tạo một tài khoản
Trang 12Quay lại Sign In để đăng nhập.
- Tải về: Tải và cài đặt Genymotion từ trang web trên Lưu ý là
phải đăng nhập vào trang web thì mới tải được Khuyến cáo nên
tải phiên bản Genymotion kèm với VirtualBox (một máy ảo tương tự như VMWare nhưng miễn phí và nguồn mở).
- Cài đặt vitual box:
Chọn Next để tiếp tục, Cancel để hủy bỏ cài đặt.
Trang 13Giữ nguyên các thiết lập cài đặt mặc đinh, nhấn Next để tiếp tục.
Nhấn Next để tiếp tục
Trang 14Quá trình cài đặt sẽ ngắt và khởi động lại kết nối mạng do đó sẽ ảnh hưởng đến các kết nối mạng đang diễn ra, bạn kiểm tra lại có
đang thực hiện tác vụ mạng nào không Chọn Yes để tiếp tục.
Nhấn Install để bắt đầu quá trình cài đặt.
Trang 15Trong quá trình cài đặt, Windows sẽ yêu cầu xác nhận các tiến trình cài đặt thiết bị ảo Đánh dấu chọn tùy chọn Always … để
chấp nhận tất cả, không xác nhận lại, sau đó nhấn Install để tiến
Trang 16Sau khi cài đặt xong, khởi động chạy Genymotion
Các bạn click vào nút Add có hình dấu cộng ở phía trên Cửa sổ mới hiện ra
Trang 17Các bạn Click vào nút “Sign in” và điền Username, Password vàoform, sau đó click “Sign in” để đăng nhập.
Sau khi đăng nhập xong sẽ hiện ra bảng cho các bạn chọn các máy ảo có sẵn, ở đây mình chọn máy ảo hệ điều hành Android bản 4.4.4, bạn có thể click vào hình mũi tên chỉ xuống để xem thông số máy:
Trang 18Chờ một lúc để tải file cài đặt máy ảo về:
Nó tải về xong sẽ tự động cài đặt luôn, sau khi cài đặt xong các bạn click Finish là được
Trang 19Quay lại Genymotion các bạn thấy cái máy ảo vừa tạo, bạn chọn
nó và click nút Start ở phía trên để khởi động máy ảo
Chờ máy ảo khởi động
Trang 203. Cài đặt android studio
- Search google: “ android studio download”
- Tải về: https://developer.android.com/studio/index.html
- Cài đặt android studio:
Trang 21Sau khi tải xong, các bạn chạy file và cứ để mặc định các tùy chọn cài đặt của Android Studio.
Bạn lựa chọn tất cả các option
Trang 22Chọn thư mục cài đặt:
Trang 23• Android Studio Installation Location:
C:\DevPrograms\Android\Android Studio
• Android SDK Install Location: C:\DevPrograms\Android\sdk
Trang 25Lựa chọn một Theme mà bạn thích
Trang 26Trong lần chạy đầu tiên, Android cần download một vài thành phần Bạn cần chờ đợi cho tới khi tiến trình download và cài đặt hoàn thành.
Trang 27II. CẤU HÌNH SQL SERVER
1. Config SQL Server cho phép kết nối từ xa
Mở SQL Server Configuration Manager
Trang 28Ở menu bên trái, chọn vào mục SQL Server 2012 Services ->
Bên phải tìm mục SQL Server (MSSQLSERVER) (chú ý đây là dịch vụ cơ bản của SQL Server, tên của nó tùy thuộc vào Instant của SQL mà bạn cài vào máy, của tôi là MSSQLSERVER, có thể Instant của bạn sẽ khác) Click phải vào và chọn Properties (xem
hình)
Trang 29Trong Tab Log On, click chọn vào Built-In Account, chọn vào
Network Service như trong hình, Click OK
Quay lại màn hình SQL Server Configuration Manager -> ở menu bên tráitiếp tục click vào mục SQL Server 2012 Network Configuration để mở ra
menu con Protocols for MSSQLSERRVER(tên trên máy bạn có thể khác),
chọn vào mục này -> bên phải tìm mục có tên là TCP/IP, click phải vào nó
và chọn Properties (xem hình)
Trang 31Chú ý IP Address là Ip của máy (Cách kiểm tra Ip) hoặc cũng thể dùng
CMD -> IPCONFIG
Ở mục IP Address bạn xóa đi và gõ lại địa chỉ IP của máy bạn trong mạng
LAN (chú ý đây là địa chỉ IP của máy bạn trong mạng LAN – ví dụ của
tôi là 192.168.43.216)
Ở mục Active - chọn Yes, mục Enabled - chọn Yes
Ở mục TCP Port, khai báo cổng share mặc định của SQL, bạn có thể để mặc định là 1433
Click OK
Trang 32Restart lại SQL Server (bằng cách chọn vào mục SQL Server 2012
Services, bên phải click phải vào mục SQL Server (MSSQLSERVER) -> Chọn Restart)
2. Tạo một user để thực hiện kết nối từ xa
Mở Start -> All Programs -> Microsoft SQL Server 2012-> SQL Server Management Studio -> Connect vào Server
Ở menu bên trái, mở mục Security -> Login -> Nhấn chuột phải và chọnNew Login
3. Cấu hình Firewall cho phép nhận kết nối đến qua cổng share của SQL server
Vào Start -> Control Panel -> Windows Firewall -> Ở menu bên trái chọn Advanced settings
Menu bên trái, click vào mục Inbound Rules
Tiếp tục ở Menu bên phải, click vào mục New Rule
Trong cửa sổ mới hiện ra, đánh dấu vào mục Port như hình -> Nhấn Next
Trang 33Tiếp theo nhấn chọn vào mục TCP và Specific local Ports, gõ vào 1433 (số cổng share của SQL Server đã config trong bước 2) -> Nhấn Next
Trang 34Trên màn hình tiếp theo, đánh dấu chọn vào mục Allow the connection -> Nhấn Next
Trong màn hình tiếp theo, chọn kiểu mạng sẽ áp dụng mở cổng này, đánh dấuvào cả 3 mục Domain, Private, Public -> Nhấn Next
Trang 35Trong màn hình tiếp theo, gõ tên kết nối và Description tùy ý -> Nhấn Finish
Trang 36Log Off hoặc Restart lại máy
III. TRÊN SQL SERVER
1. Tạo database
USE Andro
select * from Usertbl
create table Usertbl
(
Id int identity (1,1) not null,
UserId nvarchar(50) not null,
Password nvarchar(50) not null
)
insert into Usertbl (UserId,Password) values ('hitesh1120', '789')
create table Producttbl (
Id int identity (1,1) not null,
ProName nvarchar(50) not null,
ProDesc nvarchar(50) not null,
OnDate nvarchar(50) not null
Trang 37truncate table Producttbl
insert into Producttbl (ProName,ProDesc,OnDate) values('Samsung J7', 'Gamers targeted mobile from Samsung', '2015-10-17 19:56:00.000')
insert into Producttbl (ProName,ProDesc,OnDate) values('Samsung J5', 'Gamers targeted mobile from Samsung', '2015-10-17 19:56:00.000')
insert into Producttbl (ProName,ProDesc,OnDate) values('Xiaomi Redmi 2', 'Best Entry level smartphone from Xiaomi', '2015-10-17 19:59:00.000')
insert into Producttbl (ProName,ProDesc,OnDate) values('Apple iPhone 6s', 'Flagship device from APPLE', '2015-10-17 19:59:00.000')
insert into Producttbl (ProName,ProDesc,OnDate) values('Apple iPhone 6s Plus', 'Flagship device from APPLE','2015-10-17 19:59:00.000')
insert into Producttbl (ProName,ProDesc,OnDate) values('Xiaomi Redmi Note 2', 'Best Entry level smartphone from Xiaomi', '2015-10-17 19:59:00.000')
Trang 38insert into Producttbl (ProName,ProDesc,OnDate) values('Lenovo A6000', 'Best Entry level smartphone from Lenovo', '2015-10-17 19:59:00.000')
insert into Producttbl (ProName,ProDesc,OnDate) values('Motorola MOTO X Pure Edition', 'Best Android device right now!!', '2015-10-17 19:59:00.000')
insert into Producttbl (ProName,ProDesc,OnDate) values('Motorola MOTO E 2gen', 'Budget device from
Trang 39CREATE PROCEDURE viewCountry
Trang 43IV. TẠO PROJECT TRÊN ANDROID STUDIO
1. Tạo giao diện Login đơn giản
1.1. Tạo project mới
Trang 45Đổi tên layout: activity_main.xml -> layout_dangnhap.xml
Trang 46Copy code về thiết kế layout vào layout_dangnhap.xml
<?xml version= "1.0" encoding= "utf-8"?>
<RelativeLayout
xmlns: android = "http://schemas.android.com/apk/res/an droid"
xmlns: app = auto"
xmlns: tools = "http://schemas.android.com/tools" android :layout_width= "match_parent"
android :layout_height= "match_parent"
tools :context= "com.pilu.ketnoiandroidvoisqlserver.Ma inActivity"
Trang 47android :background= "@color/backgrounđangnhap"> <TextView
android :layout_width= "wrap_content"
<ImageView
android :layout_width= "110dp"
android :layout_alignRight= "@id/lnKhungDangNhap"
android :layout_marginTop= "@dimen/size80dp"/>
<LinearLayout
android :id= "@+id/lnKhungDangNhap"
Trang 48android :layout_centerVertical= "true">
<EditText
android :id= "@+id/edtTenDangNhap"
android :textColorHint= "@color/colorPrimary"
android :drawablePadding= "@dimen/size10dp"
android :textColor= "@color/colorPrimaryDark"/>
<EditText
android :id= "@+id/edtMatKhau"
android :textColorHint= "@color/colorPrimary"
android :textColor= "@color/colorPrimaryDark"
Trang 49android :padding= "@dimen/size10dp"
android :drawablePadding= "@dimen/size20dp"
android :password= "true"/>
<Button
android :id= "@+id/btnDongY"
android :background= "@color/colorPrimary"
</LinearLayout>
</RelativeLayout>
- Tạo dimen.xml trong values
Trang 53Tạo một layout mới tên ‘android_countries’ và copy code này vào
<?xml version= "1.0" encoding= "utf-8"?>
<LinearLayout
xmlns: android = "http://schemas.android.com/apk/res/an droid"
android :orientation= "vertical"
android :layout_width= "match_parent"
android :layout_height= "match_parent"
android :background= "@color/colorOrange"
android :weightSum= "10" >
<EditText
Trang 54android :id= "@+id/edtid"
android :id= "@+id/lstcountry"
android :id= "@+id/lblheader"
Trang 55android :text= "COUNTRIES : "
Trang 57Download thư viện jtds-1.2.7.jar để kết nối giữa Android và SQL Server.
Cách thêm thư viện vào project Android
+ Chuyển qua góc nhìn Project trong Android
Trang 58Tạo lớp ConnectionDB.java : lớp này để truyền các thông số IP, Tên DB,
User, Pass để kết nối vào Database của SQL Server đã tạo từ trước
public class ConnectionDB {
public Connection CONN(){
StrictMode.ThreadPolicy policy = new
StrictMode.ThreadPolicy.Builder()
permitAll().build();
StrictMode.setThreadPolicy(policy);
Connection conn = null;
String ConnURL = null;
try{
Class.forName(classs);
ConnURL = "jdbc:jtds:sqlserver://" + ip + ";"
";user=" + un + ";password="
Trang 59+ password + ";";
conn =
DriverManager.getConnection(ConnURL);
} catch (SQLException se) {
Log.e("ERRO", se.getMessage());
Tạo Class DangNhapDAO: viết các câu truy vấn để xử lý đăng nhập
public class DangNhapDAO {
ConnectionDB connectionDB = new ConnectionDB(); String z = "";
Connection con = connectionDB.CONN();
boolean kiemTra = false;
Trang 60z = "Lỗi kết nối";
}
else
{
String query = "select * from
Trang 61}
}
1.2. Giao diện để load, kiểm tra dữ liệu
Tạo class LoadCountries: để viết câu truy vấn
public class LoadCountries {
ConnectionDB connectionDB = new ConnectionDB(); String z="";
ResultSet rs;
Connection con = connectionDB.CONN();
final ArrayList list = new ArrayList();
public ArrayList getListCountries(){
} catch (Exception ex) {
z = "Exceptions";
}
return list;
}
Trang 62public ArrayList getCountriesName(String edtid){
}catch (Exception ex){
Tạo class Countries: để xử lý
public class Countries extends AppCompatActivity{ TextView lblheader;
Typeface font;
Button btnviewall,btnview;
ListView lstcountry;
Trang 63edtid = (EditText) findViewById(R.id.edtid);
final LoadCountries loadCountries = new
LoadCountries();
btnviewall.setOnClickListener(new
View.OnClickListener() {
@Override
Trang 64public void onClick(View v) {
ArrayAdapter adapter = new
Trang 65});
}
}
Về giao diện chính MainActivity khai báo , ánh xạ các đối tượng
Viết sự kiện Click cho Button Login
public class MainActivity extends AppCompatActivity {
Trang 66String z =
dangnhapDB.Login(tendangnhap,matkhau);
final Intent myIntent = new
Intent(MainActivity.this,Countries.class);
Trang 67Bước cuối cùng phải cấp quyền cho ứng dụng truy cập internet để lấy dữ liệu
Trang 68Sau khi chạy xong Gõ tên đăng nhập và mật khẩu bên bảng Usertbl mà ta đãchèn vào SQLserver
Trang 69V. MỘT SỐ LỖI GẶP PHÃI TRONG QUÁ TRÌNH LÀM BÀI VÀ CÁCH FIX
Trang 70Lỗi 1:
E/ERRO: Network error IOException: failed to connect to /192.168.1.103 (port 1433): connect failed: ECONNREFUSED (Connection refused)
Cách fix lỗi:
Chỉnh lại Ip trong bảng TCP/Ip trong SLQ Configuaration (Để ý IP
Address : 127.0.0.1 chỉnh lại bằng IP Static của máy)
Trang 71Tiếp theo bật SQL SERVER BROWSER Nếu SQL Server Browser có lỗi thìvào service của hệ thống Start lại.
Trang 72Cách fix lỗi : thêm thư viện jtds-2.1.7 vào project
02-27 20:28:43.765 12397-12436/com.example.nhatthanh.exlogin1 E/ERRO:Network error IOException: socket failed: EACCES (Permission denied)
Thiếu quyền truy cập internet
<uses-permission android:name="android.permission.INTERNET" /> Lỗi 3: Chưa cấp quyền truy cập
Properties -> server Roles chọn quyền
- sysadmin: làm một thành phần có thể biểu diễn bất cứ hành động nào trên server
- serveradmin: là thành phần có thể thay đổi các lựa chọn để cấu hình server
và tắt server
- securityadmin:là thành phần quản lý đăng nhập và các quyền sở hữu của họ
Họ có giấy phép GRANT(cấp), DENY(từ chối), and REVOKE(thu hồi)quyền truy cập trên server
Họ có giấy phép GRANT(cấp, DENY(từ chối), and REVOKE(thu hồi) quyền truy cập trên database nếu học truy cập đến một cơ sở dữ liệu
Ngoài ra, họ có thể đặt lại mật khẩu cho sự đăng nhập SQL server
- processadmin: là thành phần có thể kết thúc tiến trình trong khi nó đang chạy trong một thể hiện của SQL server
- setupadmin:là thành phần có thể thêm và xóa liên kết server
Trang 73- bulkadmin: là thành phần có thể chạy câu lệnh BULK INSERT.
- diskadmin: sử dụng cho sự quản lý tập tin trên đĩa
- dbcreator: là thành phần có thể tạo, thay đổi, xóa, hồi phục lại database
- public: Mỗi SQL server đăng nhập thuộc về vai trò public server
Khi chính máy chủ server không được cấp hoặc từ chối cấp phép cụ thểtrên một đối tượng securable,
người sử dụng kế thừa các quyền được cấp cho công chúng vào đối tượng đó
Chỉ gán quyền nào trên bất kỳ đối tượng khi bạn muốn các đối tượng
có sẵn cho tất cả người dùng