我正在Android中进行SqlServer连接。
我包含了所有必要的jar文件。
Buildpath Snap:
错误行:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
订购& EXPORT:
修改
package com.example.sqlservercall;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
String url="jdbc:sqlserver://10.0.2.2;instance=14GRAFICALI\\MSSQLSERVER2008;databaseName=AndroidDB;integrated security=true";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tvData=(TextView)findViewById(R.id.tvSelectedData);
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
Connection conn =DriverManager.getConnection(url);
System.out.println("connected");
Statement statement=conn.createStatement();
ResultSet resultSet=statement.executeQuery("select * from AndroidDB");
while(resultSet.next()){
tvData.setText(" Data1 : "+resultSet.getString(1)+" Data 2 : "+resultSet.getNString(2));
}
} catch (Exception e) {
e.printStackTrace();
tvData.setText(e.getMessage());
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
异常详细:
新错误afeter按顺序检查罐子并导出:
Unable to execute dex: Multiple dex files define Lcom/microsoft/sqlserver/jdbc/ActivityCorrelator$1;
[2013-09-06 18:24:04 - SQLServerCall] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/microsoft/sqlserver/jdbc/ActivityCorrelator$1;
[2013-09-06 18:24:23 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/microsoft/sqlserver/jdbc/ActivityCorrelator$1;
[2013-09-06 18:24:23 - SQLServerCall] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/microsoft/sqlserver/jdbc/ActivityCorrelator$1;
答案 0 :(得分:1)
确保这些库位于“Android私有库”中,并在Order and Export
标签中添加“Android私有库”。
将libs
目录中的库放入应该已经足够了,您不需要将它们添加到构建路径,因为libs
目录中的所有文件都会自动添加到构建路径中(通过“Android私人图书馆”)。
我也相信你试图实例化错误的类,尝试使用类名 com.microsoft.sqlserver.jdbc.SQLServerDriver
(我在你的截图中注意到真正的包名是 {{ 1}} 和不 com.microsoft.sqlserver.jdbc
)
编辑:(更新后更新的答案)
我假设sqljdbc.jar和sqljdbc4.jar都包含相同的类,如果是这种情况,你只能在项目中包含其中一个。
答案 1 :(得分:1)
从屏幕截图中我可以看到,您应该替换:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")
with:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
答案 2 :(得分:1)
错误是“多个Dex文件”所以必须根据你的屏幕截图多次添加Same jar看 Buildpath Snap:有两个 sqljdbc.ja **河只保留一个(保留最新的一个,删除其他)然后转到**订单&导出:并选中所有复选框。喜欢Android支持版本4也。它将解决您的问题..