带有 Service Pack 2 的 SQL Server Developer Edition 的 jTDS 连接字符串

Posted

技术标签:

【中文标题】带有 Service Pack 2 的 SQL Server Developer Edition 的 jTDS 连接字符串【英文标题】:jTDS connection string for SQL Server Developer Edition with Service Pack 2 【发布时间】:2015-08-10 10:50:16 【问题描述】:

我正在构建一个 android 应用程序。我的ConnectionURL 在哪里

ConnectionURL = "jdbc:jtds:sqlserver://" + server + ";"
                + "databaseName=" + database + ";user=" + user
                + ";password=" + password + ";";

累加。对此答案:Help me create a jTDS connection string

connectionString 应该是

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

jdbc:jtds:sqlserver://MYPC:1433/Blog;instance=SQLEXPRESS;user=sa;password=s3cr3t

或者,如果您更喜欢使用 getConnection(url, "sa", "s3cr3t"):

jdbc:jtds:sqlserver://MYPC:1433/Blog;instance=SQLEXPRESS

但是,我没有使用 SQLEXPRESS。我使用的是 Microsoft SQL Server Developer Edition。

我所做的是,一键单击(android)事件发生。登录表单验证用户名和密码并写入新的 TextEdit。

package com.muchmore.mydatabase;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class MainActivity extends AppCompatActivity 
     Button loginbtn;
     TextView errorlbl;
     EditText edname, edpassword;
     Connection connect;
     PreparedStatement preparedStatement;
     Statement st;
     String ipaddress, db, username, password;

     @SuppressLint("NewApi")
            private Connection ConnectionHelper(String user, String password,
                                    String database, String server) 
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
            .permitAll().build();
            StrictMode.setThreadPolicy(policy);
            Connection connection = null;
            String ConnectionURL = null;
            try 
                   Class.forName("net.sourceforge.jtds.jdbc.Driver");

                  ConnectionURL = "jdbc:jtds:sqlserver://" + server + ";"
                                 + "databaseName=" + database + ";user=" + user
                                 + ";password=" + password + ";";
                  /*
                  I was tyring to built a right connection string here. Please get it working :) 
                  ConnectionURL = "jdbc:jtds:sqlserver://localhost/"
                                 + "databaseName=" + "MyDatabase" + ";user=" + "sa"
                                 + ";password=" + "sa@123" + ";";
                  */
                 //private String URL =            "jdbc:jtds:sqlserver://localhost/brandix;instance=sqlexpress;useNTLMv2=tru‌​e;domain=workgroup"
                 connection = DriverManager.getConnection(ConnectionURL);
                  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 connection;
             

             @Override
             protected void onCreate(Bundle savedInstanceState) 
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);

             loginbtn = (Button) findViewById(R.id.btnlogin);

             errorlbl = (TextView) findViewById(R.id.lblerror);

             edname = (EditText) findViewById(R.id.txtname);
             edpassword = (EditText) findViewById(R.id.txtpassword);

             ipaddress = "127.0.0.1";
             db = "MyDatabase";
             username = "sa";
             password = "sa@123";
             connect = ConnectionHelper(username, password, db, ipaddress);
             loginbtn.setOnClickListener(new View.OnClickListener() 

             @Override
             public void onClick(View v) 
                 try 
                      connect = ConnectionHelper(username, password, db, ipaddress);

                      st = connect.createStatement();
                      ResultSet rs = st.executeQuery("select * from login where userid='" + edname.getText().toString() + "' and password='" + edpassword.getText().toString() + "'");
                      if (rs != null && rs.next()) 
                                errorlbl.setText("Login Successful!!!");
                        else 
                                errorlbl.setText("Sorry, wrong credentials!!!");
                      

                       catch (SQLException e) 
                           errorlbl.setText(e.getMessage().toString());
                      
                
    );

连接引用中有空引用。所以,我确信连接字符串中有一些错误。否则我的 android 代码看起来不错。请查看字符串的正确格式。

【问题讨论】:

Microsoft SQL Server 开发者版....@a_horse_with_no_name 那么你的问题到底是什么? 你可以阅读我的问题Connection object connect is null....所以连接字符串可能有一些错误请解决它。我想得到连接参考有正确的地址@a_horse_with_no_name 【参考方案1】:

有两个最流行的用于 MS SQL 的 JDBC 驱动程序。一种是 JTDS,另一种是官方的 Microsoft JDBC 驱动程序。 看起来您混合了两个驱动程序的连接字符串语法。

JTDS 驱动连接字符串示例为: jdbc:jtds:sqlserver://NETWORK_HOST_NAME_OR_IP:1433/NAME_OF_DATABASE

可以找到更多关于创建它的提示:http://jtds.sourceforge.net/faq.html#urlFormat

Microsoft JDBC 连接字符串示例为: jdbc:sqlserver://NETWORK_HOST_NAME_OR_IP:1433;databaseName=NAME_OF_DATABASE

请注意,实例名称是可选的。请查看这篇文章以获取全面的文档:https://msdn.microsoft.com/en-us/library/ms378428(v=sql.110).aspx

如果您需要找出要在连接字符串中使用的 MSSQL 实例名称,最简单的方法是执行查询:

SELECT @@SERVERNAME

【讨论】:

@androidplusios.design 不用担心在 google 中找到了您的问题,所以尽管可能值得回答。正确的句子应该是“jtds 工作正常......有时”虽然:P

以上是关于带有 Service Pack 2 的 SQL Server Developer Edition 的 jTDS 连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

win7安装sql server2012提示没有service pack1

SQL Server安装提示需要microsoft.NET Framework 3.5 Service Pack 1

SQL Server安装提示需要microsoft.NET Framework 3.5 Service Pack 1

SQL Server 2008 R2 Service Pack 3 已经发布

Microsoft SQL Server 2008 Express Service Pack 1(x89)安装失败

SQl server 2000 新建数据库时问题! 本系统为Microsoft Windows XP Professional 版本2002 Service pack