java - SqlConnection 在连接测试时抛出错误

标签 java android sql-server android-studio

我正在尝试测试与 msql 服务器的连接,它向我抛出错误 System.err: java.lang.RuntimeException: No message resource found for message property prop.servertype。它一直通过并在 con = DriverManager.getConnection(conString, user, password);

处停止
  private class AsyncTaskRunner extends AsyncTask<String, String, String>
    {
        ProgressDialog progressDialog;
        boolean conSuccess = false;
        String host, port, dbname, user, password, instance;

        @Override
        protected String doInBackground(String... params)
        {
            try
            {
                Log.e("SQLConfig", "Estou dentro do try");


                String driver = "net.sourceforge.jtds.jdbc.Driver";
                String conString;
                if (TextUtils.isEmpty(port))
                {
                    conString = "jdbc:jtds:sqlserver://" + host + "/" + instance + ";DatabaseName=" +dbname;
                }
                else
                {
                    conString = "jdbc:jtds:sqlserver://" + host + ":" + port + "/" + instance + ";DatabaseName=" +dbname;
                }
                Connection con;
                Class.forName(driver);
                Log.e("SQLConfig", "Driver metida com sucesso");
                //con = DriverManager.getConnection(testCon);
                Log.i("Carlos",conString + " - User: " + user + " - Password: " + password);
                con = DriverManager.getConnection(conString, user, password);
                Log.e("SQLConfig", "Consegui fazer a ligação com sucesso");
                con.close();
                Log.e("SQLConfig", "Fechar ligação ");
                conSuccess = true;
            }
            catch (Exception e)
            {
                e.printStackTrace();
                Log.e("SQLConfig", "Não consegui fazer a ligação");
                Log.e("SQLConfig", e.toString());
                Log.e("SQLConfig", e.getMessage());
            }
            return null;
        }

完整的错误堆栈:

W/System.err: java.lang.RuntimeException: No message resource found for message property prop.servertype
        at net.sourceforge.jtds.jdbc.Messages.get(Messages.java:120)
        at net.sourceforge.jtds.jdbc.Messages.get(Messages.java:67)
        at net.sourceforge.jtds.jdbc.Driver.parseURL(Driver.java:374)
        at net.sourceforge.jtds.jdbc.Driver.setupConnectProperties(Driver.java:239)
        at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:182)
        at java.sql.DriverManager.getConnection(DriverManager.java:569)
W/System.err:     at java.sql.DriverManager.getConnection(DriverManager.java:219)
        at com.example.viewer.dbconfig$AsyncTaskRunner.doInBackground(dbconfig.java:210)
        at com.example.viewer.dbconfig$AsyncTaskRunner.doInBackground(dbconfig.java:181)
        at android.os.AsyncTask$2.call(AsyncTask.java:333)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
E/SQLConfig: Não consegui fazer a ligação
    java.lang.RuntimeException: No message resource found for message property prop.servertype
    No message resource found for message property prop.servertype

从手机打印: enter image description here

当我点击“Testar ligação”按钮时,它会执行验证文本框是否为空的操作

        _btnTestCon.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                // Verificar se os dados forem todos preenchidos ou não
                if (_editTextHost.getText().toString().trim().equals("") || _editTextInstance.getText().toString().trim().equals("") ||
                        _editTextDbName.getText().toString().trim().equals("") || _editTextUser.getText().toString().trim().equals("") || _editTextPass.getText().toString().trim().equals(""))
                {
                    AlertDialog.Builder builder = new AlertDialog.Builder(dbconfig.this);

                    builder.setMessage(R.string.config_message_needMoreInfo)
                            .setCancelable(false)
                            .setPositiveButton(R.string.general_ok, new DialogInterface.OnClickListener()
                            {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i)
                                {
                                    dialogInterface.cancel();
                                }
                            });
                    builder.show();
                }
                // Testar a ligação
                else
                {
                    AsyncTaskRunner runner = new AsyncTaskRunner();
                    runner.execute();
                }
            }
        });
    }

我希望 DriverManager.getConnection 返回日志。

最佳答案

请提供完整的堆栈跟踪和日志记录。 你是如何执行你的代码的? 您是否有在预期的主机和端口上运行的 SQL Server 数据库?

查看文档:http://jtds.sourceforge.net/faq.html

The URL format for jTDS is:

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

where is one of either 'sqlserver' or 'sybase' (their meaning is quite obvious), is the port the database server is listening to (default is 1433 for SQL Server and 7100 for Sybase) and is the database name -- JDBC term: catalog -- (if not specified, the user's default database is used).

例如您的网址是:

jdbc:jtds:sqlserver://host:1337/instance;DatabaseName=dbname

您确定网址正确吗? 您是否设置端口号? 实例存在吗? 属性 DatabaseName 是否存在,您是否向其传递了正确的值?

关于java - SqlConnection 在连接测试时抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57804646/

相关文章:

mysql - 将数据从 SQL Server 2008 R2 传输到 MySQL

sql-server - 了解 SQL Server 中的 COMPATIBILITY_LEVEL

java - Base64 编码/解码问题 : decoded string is '?'

android - CardView 和 RecyclerView 分隔符行为

android - Kotlin 协程 `runBlocking`

sql-server - 如何删除 SSIS 中数据流任务中的列?

java - 具有历史数据访问功能的 Milo OPC UA 服务器

java - 在 Servlet 中强制浏览器下载 - Spring

列表的Java 8范围()?

android - 调用 PublishSubject.onNext() 和接收它之间的 Rx Interval 很长