我正在尝试使用Android Studio 1.1.0中的JDBC连接MS SQL数据库。我正在引用this网站进行连接。这是我的连接代码:
import android.annotation.SuppressLint;
import android.os.StrictMode;
import android.util.Log;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.DriverManager;
public class ConnectionClass {
String ip = "IP_Address(for eg.192.168.5.60)";
String classs = "net.sourceforge.jtds.jdbc.Driver";
String db = "Andro";
String un = "username";
String password = "pwd";
@SuppressLint("NewApi")
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 + "/"
+ "databaseName=" + db + ";user=" + un + ";password="
+ password + ";";*/
ConnURL= "jdbc:jtds:sqlserver://IP_Address(for eg.192.168.5.60)/databaseName=Andro;user=username;password=pwd;";
conn = DriverManager.getConnection(ConnURL);
} catch (SQLException se) {
Log.e("ERRO", se.getMessage());
} catch (ClassNotFoundException e) {
Log.e("ERRO", e.getMessage());
} catch (Exception e) {
Log.e("ERRO", e.getMessage());
}
return conn;
}
}
像这样调用connectionClass.CONN()函数:
@Override
protected String doInBackground(String... params) {
if(userid.trim().equals("")|| password.trim().equals(""))
z = "Please enter User Id and Password";
else
{
try {
Connection con = connectionClass.CONN();
if (con == null) {
z = "Error in connection with SQL server";
} else {
heading.setText("u"+con.toString());
String query = "select * from Usertbl where UserId='" + userid + "' and Password='" + password + "'";
Statement stmt = con.createStatement();
heading.setText("After statement");
ResultSet rs = stmt.executeQuery(query);
// heading.setText(rs.getString(1));
z = "under else block";
if(rs.next())
{
z = "Login successfull";
isSuccess=true;
}
else
{
z = "Invalid Credentials";
isSuccess = false;
}
}
}
catch (Exception ex)
{
isSuccess = false;
z = "Exceptions";
}
}
return z;
}
我只是想用android studio连接数据库。错误显示如下
请建议任何解决方案或任何提示来执行连接。
答案 0 :(得分:1)
错误是因为您尝试从异步任务设置textview字段的文本值。 在这里:heading.setText(" u" + con.toString()); 只需删除它,错误可能会解决。 另请注意,异步任务无法设置活动组件的值,如EditText,Textview甚至是按钮字段。
答案 1 :(得分:0)
https://www.youtube.com/watch?v=HRF8NpoFteg
请注意,必须下载jtds-1.2.7,最新版本可能不适用于真正的移动设备(我在模拟器上连接的数据库连续一周遇到此问题但在真实移动设备上没有)。
进一步包括jtds-1.2.7 gradle build可能会给出一个错误的即时运行,请从文件中取消选中即时运行 - >设置 - >即时运行 - >取消选中启用即时运行。
希望它能够解决问题!