安卓访问mysql 的url_Android 连接网络数据库的方式

3ad815d73c43

android

前言

以连接 SQL Server 的网络数据库为例,

常用的一共有两种方式:

1.在Android工程中引入JDBC驱动,直接连接;

2.通过WebService等方法的间接连接。

采用JDBC方法主要问题是安全性不高,而且一旦要访问的数据量过多,容易出问题。

另外,Android系统本身有对json或者xml直接解析的api,所以建议采用第二种方法,实用性与安全性都提高了。

正文

1 直接连接方式

1.1 使用jtds方法

1.1.1 导入jtds相关依赖,具体可操作如下:

然后,在工程目录下,把jtds的jar包拷贝到libs文件夹。

编译项目。对lib进行引用。

最后,编辑测试代码,运行测试。

1.1.2 用jdts连接sql server数据库有两种方式:

第一种就是指定用户和密码;第二种就是windows系统账户。

两种连接有什么不同呢?url不同,然后就是第二种不需要用户名和密码。

两种url如下例:

然后的代码就差不多了:

Class.forName(DRIVER);

conn=DriverManager.getConnection(url,user_name, password);//第一种

conn=DriverManager.getConnection(url);//第二种

System.out.println("connect success!");

1.1.3 一个简单的Android通过jdbc直接连接mysql数据库的小例子

1.1.3.1 Android 连接MySQL数据库

public class DBOpenHelper {

//MySQL 驱动 根据使用的驱动自行调整使用

//private static String driver = "com.mysql.jdbc.Driver";

private static String driver = "net.sourceforge.jtds.jdbc.Driver";

//MYSQL数据库连接Url,此处需要注意根据使用的驱动不同,连接url的方式也会有所差别,本文使用的驱动为JTDS

//private static String url = "jdbc:mysql://IP:端口号/数据库";

private static String url = "jdbc:jtds:sqlserver://IP:端口号;instanceName=SQLEXPRESS;databaseName=数据库名";

private static String user = "用户名";//用户名

private static String password = "密码";//密码

/**

* 连接数据库

* */

public static Connection getConn(){

Connection conn = null;

try {

Class.forName(driver);//获取MYSQL驱动

conn = (Connection) DriverManager.getConnection(url, user, password);//获取连接

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}

/**

* 关闭数据库

* */

public static void closeAll(Connection conn, PreparedStatement ps){

if (conn != null) {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (ps != null) {

try {

ps.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

/**

* 关闭数据库

* */

public static void closeAll(Connection conn, PreparedStatement ps, ResultSet rs){

if (conn != null) {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (ps != null) {

try {

ps.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (rs != null) {

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

1.1.3.2 增删改查

public class DBService {

private Connection conn=null; //打开数据库对象

private PreparedStatement ps=null;//操作整合sql语句的对象

private ResultSet rs=null;//查询结果的集合

//DBService 对象

public static DBService dbService=null;

/**

* 构造方法 私有化

* */

private DBService(){

}

/**

* 获取MySQL数据库单例类对象

* */

public static DBService getDbService(){

if(dbService==null){

dbService=new DBService();

}

return dbService;

}

/**

* 获取User信息 例句---查

* */

public List getUserData(){

//结果存放集合

List list=new ArrayList();

//MySQL 语句

String sql="select * from user";

//获取链接数据库对象

conn= DBOpenHelper.getConn();

try {

if(conn!=null&&(!conn.isClosed())){

ps= (PreparedStatement) conn.prepareStatement(sql);

if(ps!=null){

rs= ps.executeQuery();

if(rs!=null){

while(rs.next()){

User u=new User();

u.setId(rs.getString("id"));

u.setName(rs.getString("name"));

u.setPhone(rs.getString("phone"));

u.setContent(rs.getString("content"));

u.setState(rs.getString("state"));

list.add(u);

}

}

}

}

} catch (SQLException e) {

e.printStackTrace();

}

DBOpenHelper.closeAll(conn,ps,rs);//关闭相关操作

return list;

}

/**

* 修改数据库中某个对象的状态 例句---改

* */

public int updateUserData(String phone){

int result=-1;

if(!StringUtils.isEmpty(phone)){

//获取链接数据库对象

conn= DBOpenHelper.getConn();

//MySQL 语句

String sql="update user set state=? where phone=?";

try {

boolean closed=conn.isClosed();

if(conn!=null&&(!closed)){

ps= (PreparedStatement) conn.prepareStatement(sql);

ps.setString(1,"1");//第一个参数state 一定要和上面SQL语句字段顺序一致

ps.setString(2,phone);//第二个参数 phone 一定要和上面SQL语句字段顺序一致

result=ps.executeUpdate();//返回1 执行成功

}

} catch (SQLException e) {

e.printStackTrace();

}

}

DBOpenHelper.closeAll(conn,ps);//关闭相关操作

return result;

}

/**

* 批量向数据库插入数据 例句---增

* */

public int insertUserData(List list){

int result=-1;

if((list!=null)&&(list.size()>0)){

//获取链接数据库对象

conn= DBOpenHelper.getConn();

//MySQL 语句

String sql="INSERT INTO user (name,phone,content,state) VALUES (?,?,?,?)";

try {

boolean closed=conn.isClosed();

if((conn!=null)&&(!closed)){

for(User user:list){

ps= (PreparedStatement) conn.prepareStatement(sql);

String name=user.getName();

String phone=user.getPhone();

String content=user.getContent();

String state=user.getState();

ps.setString(1,name);//第一个参数 name 规则同上

ps.setString(2,phone);//第二个参数 phone 规则同上

ps.setString(3,content);//第三个参数 content 规则同上

ps.setString(4,state);//第四个参数 state 规则同上

result=ps.executeUpdate();//返回1 执行成功

}

}

} catch (SQLException e) {

e.printStackTrace();

}

}

DBOpenHelper.closeAll(conn,ps);//关闭相关操作

return result;

}

/**

* 删除数据 例句---删

* */

public int delUserData(String phone){

int result=-1;

if((!StringUtils.isEmpty(phone))&&(PhoneNumberUtils.isMobileNumber(phone))){

//获取链接数据库对象

conn= DBOpenHelper.getConn();

//MySQL 语句

String sql="delete from user where phone=?";

try {

boolean closed=conn.isClosed();

if((conn!=null)&&(!closed)){

ps= (PreparedStatement) conn.prepareStatement(sql);

ps.setString(1, phone);

result=ps.executeUpdate();//返回1 执行成功

}

} catch (SQLException e) {

e.printStackTrace();

}

}

DBOpenHelper.closeAll(conn,ps);//关闭相关操作

return result;

}

}

2 通过WebService方式进行连接

通过实现WebService端相关功能,向外部提供相关API方法,使用JSON或者XML数据协议进行通讯,基本操作,具体细节不作赘述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值