新手 android 开发人员试图连接到 SQL Server 2008

Posted

技术标签:

【中文标题】新手 android 开发人员试图连接到 SQL Server 2008【英文标题】:Newbie android developer trying to connect to SQL Server 2008 【发布时间】:2013-08-18 11:56:21 【问题描述】:

我对 android 开发相当陌生,我正在尝试将我的应用程序连接到 SQL Server 2008 数据库。尝试连接时,我收到一条错误消息“找不到数据库驱动程序 net.sourceforge.jtds.jdbc.Driver”。这是我的代码:

@Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_create_course);
        // Show the Up button in the action bar.
        setupActionBar();
        setCurrentDateOnView();
        addListenerOnButton();
        TextView textview7 = (TextView) findViewById(R.id.textView7);
        String connectionurl = "jdbc:jtds:sqlserver:winsqls01.cpt.wa.co.za;databaseName=Courses; user=*;Password=*;";
try 
        Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
        textview7.setText("Successful");
        Connection con = DriverManager.getConnection(connectionurl);
        // Create and execute an SQL statement that returns some data.
        String SQL = "SELECT * FROM Courses";
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(SQL);
        while(rs.next())
        
            textview7.setText(rs.getString(0));
        
 

    catch (ClassNotFoundException e) 

         textview7.setText("Could not find the database driver " + e.getMessage());

                catch (SQLException e)           
                   textview7.setText("Could not connect to the database " + e.getMessage());

               

catch (Exception e) 
    e.printStackTrace();
 







        dpResult1 = (DatePicker) findViewById(R.id.dpResult1);
        dpResult1.setVisibility(View.GONE);
        dpResult2 = (DatePicker) findViewById(R.id.dpResult2);
        dpResult2.setVisibility(View.GONE);
    

    /**
     * Set up the @link android.app.ActionBar, if the API is available.
     */
    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    private void setupActionBar() 
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) 
            getActionBar().setDisplayHomeAsUpEnabled(true);
        
    

我的驱动程序导入是import net.sourceforge.jtds.jdbc.*;,但它说我实际上并没有使用这个导入。有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

你看过这个solution 吗?

您使用的是哪个版本的 jdbc 驱动程序和哪个版本的 Java?用户 aiolos 建议回到旧版本 1.2.6 以使其正常工作。 如果您使用的是 1.3.0,那么您也必须使用 Java 7。 Java 6 及以下版本无法加载驱动程序。

更新

连接字符串应该是那种格式

 jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]

所以试试你的:

 jdbc:jtds:sqlserver://winsqls01.cpt.wa.co.za:__PORT__;databaseName=Courses;user=*;password=*;

更新 2

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_create_course);
    // Show the Up button in the action bar.
    setupActionBar();
    setCurrentDateOnView();
    addListenerOnButton();
    TextView textview7 = (TextView) findViewById(R.id.textView7);
    try 
        Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
        textview7.setText("Successful");
        Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://winsqls01.cpt.wa.co.za:__PORT__;databaseName=Courses", "__USERNAME__", "__PASSWORD__");
        // Create and execute an SQL statement that returns some data.
        String SQL = "SELECT * FROM Courses";
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(SQL);
        while(rs.next())
        
            textview7.setText(rs.getString(0));
        
     

    catch (ClassNotFoundException e) 
        textview7.setText("Could not find the database driver " + e.getMessage());
     
    catch (SQLException e)           
        textview7.setText("Could not connect to the database " + e.getMessage());
    
    catch (Exception e) 
        textview7.setText("Some other error occured: " + e.getMessage());
        e.printStackTrace();
    
 

试试我上面的代码,它对你的代码进行了重组,并根据你的需要更改所有标有下划线的变量。另一个说明,你确定数据库名和表名都等于“课程”吗?

【讨论】:

我刚试过,同样的错误。也许我错误地引用了 jar 文件?我正在使用eclipse,也许我以错误的方式将其导入应用程序? 好的,你要导入什么jar? jtds-1.2.6.jar ? 等一下,我设法修复了这个错误,但现在它说我的连接字符串的语法无效 我为连接字符串添加了一个示例,您在服务器之后错过了'//'并且端口丢失并且您使用了大写的密码。 NEW 错误,它根本不告诉我它是否连接到数据库。我什至无法捕捉到异常。在“DriverManager.getConnection”语句之后似乎停止执行代码。

以上是关于新手 android 开发人员试图连接到 SQL Server 2008的主要内容,如果未能解决你的问题,请参考以下文章

如何将 SQL 开发人员/Toad 连接到 Oracle 8i

无法将 Nexus One 手机连接到 Android adb

IIS无法使用SQL Server身份验证连接到SQL Server

通过 ms jdbc 连接到 Azure SQL DB 的 Android 应用程序错误

RazorSQL 和 sql 开发人员无法使用 docker 连接到 Mac 上的 oracle DB

Tensorflow android demo出错了。无法连接到相机服务