android:连接本地sqlserver数据库 Could not find class 'javax.sql.XAConnection'

本文介绍了解决Android APP连接本地SQL Server数据库时遇到的问题,包括如何替换访问地址及解决因JDBC驱动包版本不匹配导致的连接失败。文中还提供了一段示例代码,演示如何在Android应用中实现数据库的连接与基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android APP连接本地数据库,真机上我没弄成,就是ip问题,只能在模拟器上运行。假如你使用过java连接成功过,那么步骤很简单,只需要把localhost替换成10.0.2.2,这是用模拟器用的访问地址

接下要讲的就是可能出现的问题:

相信这个问题困扰你很久,你也百度了很多,但没有一个确定的说法;

现在我告诉你,这个是你引入jdbc.jar包有问题,这是因为版本号,或者机型什么的,具体我也不是特别清楚,但我真真实实试过,有可能你在Myeclipse上直接连接数据库就能行,但那个jar包不一定能在android上使用,就像我的电脑,Myeclipse用一个jdbc.jar ,但android 编译器又得用另外一个jdbc.jar。你试一下就知道了。

这个问题和上面有点像,只有后面的serverException不一样,这个问题我也不是特别清楚,我自己是把AndroidManifest里面的<uses-sdk>删掉了,它就能运行了。

另外一个就是:你的数据库要用混合登陆方式和服务的TCP/IP协议端口1433是开的,具体你可以看我的另外一篇博客

点击打开链接

package com.example.warehouse;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import android.util.Log;



/**
 * @author memory_coder
 * @version 2017-4-6 下午2:17:02
 * @application
 * 数据库操作类
 */
public class Dao
{


	//这句是默认SQL server 驱动语句,照打就行
	private static String dbClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
	//这句1433是连接端口,一般是打开的。智能花盆就是数据库名字
	private static String dbUrl= "jdbc:sqlserver://10.0.2.2:1433;DatabaseName=智能花盆";
	private static String dbUser = "sa";        //数据库用户名
	private static String dbPassword = "123456";// 数据库密码
	private static Connection conn = null;      // 定义一个数据库连接


	public String sql = "select * from 花信息";   //花信息为表名
	public Dao()
	{
		if(conn==null)                          // 如果连接为空,
		{
			try                                 // 捕获数据库异常
			{
				Class.forName(dbClassName); 
				Log.i("set", "加载驱动");// 加载JDBC SQL Server 驱动
				conn = DriverManager.getConnection(dbUrl, dbUser, dbPassword);//连接数据库
				Log.i("set", "获得链接");
			} catch (ClassNotFoundException e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (SQLException e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			} 
		}
		else 
			return;                             // 如果连接不为空即返回
	}
	public static ResultSet executeQuery(String sql)
	{
		try
		{
			if(conn==null)
			{
				new Dao();
			}
			Log.i("set", "套接字");
			return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
					ResultSet.CONCUR_UPDATABLE).executeQuery(sql);
		} catch (SQLException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}
	public static int executUpdate(String sql)
	{
		try
		{
			if(conn==null)
			{
				new Dao();
			}
			return conn.createStatement().executeUpdate(sql);
		} catch (SQLException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return -1;
		}
	}
	public static void close()
	{
		try
		{
			conn.close();
		} catch (SQLException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally
		{
			conn = null;
		}
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

memory_cood

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值