Como é que me ligo a uma base de dados SQL Server 2008 usando o JDBC?
Tenho o MSSQL 2008 instalado no meu PC local, e a minha aplicação Java precisa de se ligar a uma base de dados MSSQL. Eu sou um novo para o MSSQL e eu gostaria de obter alguma ajuda na criação de login de usuário para a minha aplicação Java e obter conexão através do JDBC. Até agora eu tentei criar um login do Usuário para o meu aplicativo e usado seguindo a cadeia de conexão, mas eu não funciona em tudo. Qualquer ajuda e dica será apreciada.
jdbc:jtds:sqlserver://127.0.0.1:1433/dotcms
username="shuxer" password="itarator"
8 answers
Existem principalmente duas formas de usar o JDBC - usando a autenticação do Windows e a autenticação do SQL. A autenticação SQL é provavelmente a mais fácil. O que podes fazer é algo como:
String userName = "username";
String password = "password";
String url = "jdbc:sqlserver://MYPC\\SQLEXPRESS;databaseName=MYDB";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection(url, userName, password);
Depois de adicionar sqljdbc4.frasco para o caminho de construção.
Para a autenticação de janelas, poderá fazer algo do género:
String url = "jdbc:sqlserver://MYPC\\SQLEXPRESS;databaseName=MYDB;integratedSecurity=true";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection(url);
E depois adicionar o caminho para sqljdbc_auth.dll como um argumento VM (ainda precisa sqljdbc4.jar in the build path).
Por favor, dê uma vista de olhos. guia passo-a-passo que mostra como se ligar ao servidor SQL a partir de Java usando jTDS e JDBC se você precisar de mais detalhes. Espero que ajude!Pode usar isto :
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class ConnectMSSQLServer
{
public void dbConnect(String db_connect_string,
String db_userid,
String db_password)
{
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection(db_connect_string,
db_userid, db_password);
System.out.println("connected");
Statement statement = conn.createStatement();
String queryString = "select * from sysobjects where type='u'";
ResultSet rs = statement.executeQuery(queryString);
while (rs.next()) {
System.out.println(rs.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args)
{
ConnectMSSQLServer connServer = new ConnectMSSQLServer();
connServer.dbConnect("jdbc:sqlserver://<hostname>", "<user>",
"<password>");
}
}
Se tiver problemas de ligação, provavelmente o problema é que ainda não activou o ouvinte TCP/IP na porta 1433. Um rápido comando "netstat-an" dir-lhe-á se está a ouvir. Por padrão, o servidor SQL não activa isto após a instalação.
Além disso, você precisa definir uma senha na conta "sa" e também ativar a conta "sa" (se você planeja usar essa conta para se conectar com).
Obviamente, isto também significa que precisa de activar a "autenticação em modo misto" no teu nó MSSQL.
Também estou a usar o MSSQL server 2008 e jtds.In meu caso eu estou usando a seguinte cadeia de conexão e funciona.
Class.forName( "net.sourceforge.jtds.jdbc.Driver" );
Connection con = DriverManager.getConnection( "jdbc:jtds:sqlserver://<your server ip
address>:1433/zacmpf", userName, password );
Statement stmt = con.createStatement();
Tente usar desta forma: jdbc: jtds: sqlserver:/ / 127. 0. 0. 1/dotcms; instance=instanceName
Não sei qual a versão do mssql que está a usar, se for a edição expressa, a instância por omissão é o sqlexpress
Não se esqueça de verificar se o serviço de navegação do servidor SQL está a correr.
Pode tentar configurar o servidor SQL:
- Passo 1: abrir o Gestor de configuração do servidor SQL 20xx
- Passo 2: Carregue nos protocolos para SQL.. na configuração do servidor SQL. Em seguida, carregue com o botão direito TCP / IP, escolha as Propriedades
- Passo 3: Carregue em tab IP Address, Edite todo o TCP. Porto: 1433
Nota: {[13] } toda a porta TCP é 1433 Finalmente, reinicie o servidor.
Programa Java simples que se liga ao servidor SQL.
Nota: você precisa adicionar sqljdbc.frasco para o caminho de compilação
/ / localhost: o computador local funciona como um servidor
/ / 1433: número predefinido do Porto SQL
/ / utilizador : sa
/ / senha: use a senha, que é usada no momento da instalação do SQL server management studio, no meu caso, é 'root'
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Conn {
public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
Connection conn=null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=company", "sa", "root");
if(conn!=null)
System.out.println("Database Successfully connected");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Esta amostra de programa Java liga-se à base de dados MySQL usando o JDBC, executa uma consulta e recupera e imprime o valor do campo da base de dados.
Este mesmo código de exemplo pode ser usado para se ligar a qualquer tipo de base de dados, tudo o que você precisa fazer é mudar o url de conexão (dbUrl na amostra). Para que este código funcione corretamente, você terá que baixar o driver mysql para JDBC em outras palavras Conectores Java de mysql.com local.
Se depois de baixar o URL ainda não o fizer o trabalho, então, é, provavelmente, devido ao classpath. Terá de adicionar o ficheiro JAR do controlador no claspath.
import java.sql.*;
import javax.sql.*;
public class jdbcdemo{
public static void main(String args[]){
String dbtime;
String dbUrl = "jdbc:mysql://your.database.domain/yourDBname";
String dbClass = "com.mysql.jdbc.Driver";
String query = "Select * FROM users";
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection (dbUrl);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
dbtime = rs.getString(1);
System.out.println(dbtime);
} //end while
con.close();
} //end try
catch(ClassNotFoundException e) {
e.printStackTrace();
}
catch(SQLException e) {
e.printStackTrace();
}
} //end main
} //end class