您的位置:首页 > 移动开发 > Android开发

Android端、java端连接到SQL Server ,使用 jdbc 和 jtds ,总结

2017-07-14 15:19 323 查看
今天设置了Android端到SQL  Server 的连接,用的是 jtds的包连接的,期间各种问题不断,甚是烦,整了一天加一个早上才堪堪搞定,中间也测试了用java的  jdbc 连接方式来连接数据库,最后连接成功,现总结如下


jdbc的连接方式总结:
java 的 jdbc 连接要在要在classpath环境变量里设置 jdbc  包的路径;
运行sqlservermanager.msc,打开SQL Server的配置工具,打开MSSQLSERVER的协议,启用TCP/IP  ;
同时要把sqljdbc4.jar包放进libraries里面,一开始用的是sqljdbc.jar的包,可是报错,要用后面后数字4的哪个包才行。
代码如下:
  

import java.sql.Connection;
import java.sql.*;
public class TestDemo {
public static void main(String[] srg) {
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";  //加载JDBC驱动
String dbURL = "jdbc:sqlserver://192.168.1.25:1433; DatabaseName=mydata";  //连接服务器和数据库sample
String userName = "sa";  //默认用户名a
String userPwd = "000";  //密码
Connection dbConn;
try {
Class.forName(driverName);
dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
System.out.println("Connection Successful!");  //如果连接成功 控制台输出Connection Successful!
testConnection(dbConn);
} catch (Exception e) {
e.printStackTrace();
}

}
public static void testConnection(Connection con) throws java.sql.SQLException {
try {
String sql = "SELECT * FROM dbo.grouporder";
Statement stmt = con.createStatement();//创建Statement
ResultSet rs = stmt.executeQuery(sql);//ResultSet类似Cursor

while (rs.next()) {//<CODE>ResultSet</CODE>最初指向第一行
System.out.println(rs.getString("date"));
System.out.println( rs.getString("state"));
}
rs.close();
stmt.close();
} catch (SQLException e) {
System.out.println(e.getMessage().toString());
} finally {
if (con != null)
try {
con.close();
} catch (SQLException e) {
}
}
}
}


jtds 的连接方式,这是Android端使用的连接方式,总结如下:
运行sqlservermanager.msc,打开SQL Server的配置工具,打开MSSQLSERVER的协议,启用TCP/IP  和Named
Pipes;
同时要把jtds-1.3.0.jar包依赖进libs里面,我测试了很多个包,但也不知道哪个包才是合适的;
jtds要不要在classpath环境变量里设置 jtds  包的路径我也不太清楚,反正我设置了的。

package com.sanhuan.demo.a20170713test;

import android.os.AsyncTask;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

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

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
public Button mButton, mButton6;
public TextView mTextView1, mTextView2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button) findViewById(R.id.button);
mButton6 = (Button) findViewById(R.id.button6);
mButton6.setOnClickListener(this);
mButton.setOnClickListener(this);
mTextView1 = (TextView) findViewById(R.id.textView1);
mTextView2 = (TextView) findViewById(R.id.textView2);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button6:
mTextView1.setText("执行中...");

Log.e("chen", "点击");
ConnectTask dt = new ConnectTask();
dt.execute(1);

break;
case R.id.button:
mTextView1.setText("测试");
mTextView2.setText("测试");
break;
}
}

class ConnectTask extends AsyncTask<Integer, Integer, String> {
Connection con = null;

@Override
protected String doInBackground(Integer... params) {
Log.e("chen", "线程启动");
//建立于数据库的连接
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver"); //连接数据库
con = DriverManager.getConnection("jdbc:jtds:sqlserver://192.168.1.25:1433/mydata", "sa", "000"); //192.168.1.25是使用本机(pc)的IP,mydata是我的数据库名称
Log.e("chen", "连接成功");
testConnection(con);//测试数据库连接
} catch (ClassNotFoundException e1) {

e1.printStackTrace();
Log.e("chen....Class.forName::ClassNotFoundException", e1.getMessage());
} catch (SQLException e) {
Log.e("chen", "SQLException");
e.printStackTrace();
}

return "执行完毕";
}

@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
Log.e("chen", result);
}

public void testConnection(Connection con) throws java.sql.SQLException {
try {
String sql = "SELECT * FROM dbo.grouporder";//查询表名为“Seed.Person”的所有内容
Statement stmt = con.createStatement();//创建Statement
ResultSet rs = stmt.executeQuery(sql);//ResultSet类似Cursor

while (rs.next()) {//<CODE>ResultSet</CODE>最初指向第一行
Log.e("&&&&&", rs.getString("date"));
Log.e("&&&&&", rs.getString("state"));
}
rs.close();
stmt.close();
} catch (SQLException e) {
System.out.println(e.getMessage().toString());
} finally {
if (con != null)
try {
con.close();
} catch (SQLException e) {
}
}
}
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息