【问题标题】:Newbie android developer trying to connect to SQL Server 2008新手 android 开发人员试图连接到 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.*;,但它说我实际上并没有使用这个导入。有人可以帮忙吗?

【问题讨论】:

    标签: java android sql-server-2008 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”语句之后似乎停止执行代码。
    猜你喜欢
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多