none
String Conexão RRS feed

  • Pergunta

  • Bom Dia!

    Estou desenvolvendo um projeto C# e me deparei com uma dificuldade... preciso criar uma string de conexão com SQL Server mas quando o faço no projeto não consigo instalar o projeto em varias estancias... O que preciso é que o sistema solicite qual o DataBase quero me conectar antes de solicitar login e senha, isso é possível?

    Estou utilizando c# visual studio com Windows forms

    Desde já Obrigado

    terça-feira, 10 de fevereiro de 2015 11:07

Todas as Respostas

  • Ao invés de esta solicitando qual Database recomendo você utilizar arquivo de configuração do próprio visual Studio, app.config, aqui nessa thread ensina como utilizar.

    • Sugerido como Resposta Mr. GMSOFT terça-feira, 10 de fevereiro de 2015 11:45
    terça-feira, 10 de fevereiro de 2015 11:45
  • Ok, Obrigado Mr. GMSOFT

    Mas existe como fazer via Windows Form ?


    Rodrigo Peripato

    terça-feira, 10 de fevereiro de 2015 11:51
  • Sim mais sua aplicação ficará exposta:
     Veja aqui nessa Thread explica como fazer isso ou até mesmo listar todas as databases.

    using(var con = new SqlConnection("Data Source=Yourserver; Integrated Security=True;"))
    {
        con.Open();
        DataTable databases = con.GetSchema("Databases");
        foreach (DataRow database in databases.Rows)
        {
            String databaseName = database.Field<String>("database_name");
            short dbID = database.Field<short>("dbid");
            DateTime creationDate = database.Field<DateTime>("create_date");
        }
    } 

    A questão do prompt você pode criar um form ou usar o input do VisualBasic para isso veja aqui
    terça-feira, 10 de fevereiro de 2015 11:59
  • Ok, com a primeira solução consigo usar o sistema em rede?

    Rodrigo


    Rodrigo Peripato

    terça-feira, 10 de fevereiro de 2015 12:03
  • O Ideal para uso em rede não é colocar nome de instancia e sim o ip do servidor. exemplo abaixo:

    string conexao = @"Server=ip_servidor;Initial Catalog=banco_de_dados;User ID=id_usuario;Password=senha_usuario";

    terça-feira, 10 de fevereiro de 2015 12:08
  • Como aplicaria nesta classe pois utilizo SqlConnection(Settings.Default.StringConexao);
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    //Namespace's que contem as classes que manipulam dados
    using System.Data;
    using System.Data.SqlClient;
    
    using Clientes.Properties;
    
    namespace Clientes
    {
        public class AcessoDadosSqlServer
        {
            //Criar a conexao
            private SqlConnection CriarConexao()
            {
                return new SqlConnection(Settings.Default.StringConexao);
            }
            //Parametros que vao para o banco
            private SqlParameterCollection sqlParameterCollection = new SqlCommand().Parameters;
    
            public void LimparParametros()
            {
                sqlParameterCollection.Clear();
            }
    
            public void AdicionarParametros(string nomeParametro, object valorParametro)
            {
                sqlParameterCollection.Add(new SqlParameter(nomeParametro, valorParametro));
            }
            
            //Persistencia - Inserir, Alterar, Excluir
            public object ExecutarManipulacao(CommandType commandType, string nomeStoredProcedureOuTextoSql)
            {
    
                try
                {
                    //Criar a Conexao
                    SqlConnection sqlConnection = CriarConexao();
                    //Abrir conexao
                    sqlConnection.Open();
                    //Criar o comando que vai levar a informação para o banco de dados
                    SqlCommand sqlCommand = sqlConnection.CreateCommand();
                    //Colocando as coisas desntro do comando ( dentro da caixa que vai trafegar na conexao)
                    sqlCommand.CommandType = commandType;
                    sqlCommand.CommandText = nomeStoredProcedureOuTextoSql;
                    sqlCommand.CommandTimeout = 7200; // Em segundos
    
                    //Adicionar os parametros no comando
                    foreach (SqlParameter sqlParameter in sqlParameterCollection)
                    {
                        sqlCommand.Parameters.Add(new SqlParameter(sqlParameter.ParameterName, sqlParameter.Value));
                    }
                    //Executar o comando, ou seja, mandar o comando ir ate o bando de dados.
                    return sqlCommand.ExecuteScalar();
                }
                
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }   
            }
    
            //Consultar registros do Banco Dados
    
            public DataTable ExecutarConsulta(CommandType commandType, string nomeStoredProcedureOuTextoSql)
            {
                try
                {
                    //Criar a Conexao
                    SqlConnection sqlConnection = CriarConexao();
                    //Abrir conexao
                    sqlConnection.Open();
                    //Criar o comando que vai levar a informação para o banco de dados
                    SqlCommand sqlCommand = sqlConnection.CreateCommand();
                    //Colocando as coisas desntro do comando ( dentro da caixa que vai trafegar na conexao)
                    sqlCommand.CommandType = commandType;
                    sqlCommand.CommandText = nomeStoredProcedureOuTextoSql;
                    sqlCommand.CommandTimeout = 7200; // Em segundos
    
                    //Adicionar os parametros no comando
                    foreach (SqlParameter sqlParameter in sqlParameterCollection)
                    {
                        sqlCommand.Parameters.Add(new SqlParameter(sqlParameter.ParameterName, sqlParameter.Value));
                    }
                
                    //Criar um adaptador.
                    SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
                    
                    //DataTable = tabela de Dados vazia onde vou colocar os dados que vem do banco de Dados
                    DataTable datatable = new DataTable();
    
                    //Mandar o comando ir ate o banco buscar os dados e o adapatador preendher o datatable
                    sqlDataAdapter.Fill(datatable);
    
                    return datatable;
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }   
            }
        }
    }
    


    Rodrigo Peripato

    terça-feira, 10 de fevereiro de 2015 12:18
  • Mais o que essa string retorna e de onde pega essas informações, esta usando algum arquivo de configuração?
    Se eu fizer isso aqui :

    private SqlConnection CriarConexao()
            {
    string ip_servidor;
    string banco_de_dados;
    string id_usuario;
    string senha_usuario;
    
           try
           {
             //use aqui o input box
           }
            catch(Exception ex)
             {
                throw new Exception("Erro de conexão: "+ex.Message);
              }
               return new SqlConnection("@"Server=ip_servidor;Initial Catalog=banco_de_dados;User ID=id_usuario;Password=senha_usuario"");
            }
    
    


    terça-feira, 10 de fevereiro de 2015 12:34
  • Vou te passar o projeto é pequeno ainda estou no inicio, desculpe a falta de conhecimento mas gostaria de iniciar já com as devidas parametrizações para não precisar ficar voltando em fases anteriores.Projeto Clientes


    Rodrigo Peripato

    terça-feira, 10 de fevereiro de 2015 12:54
  • Ok vou dar uma olhada a tarde te retorno, quando chegar em casa
    terça-feira, 10 de fevereiro de 2015 12:57
  • Muito obrigado mesmo...

    A ideia é solicitar os parâmetros de conexão ao SQL ao iniciar o programa, após esta faze entra a parte de acesso, verificar se o usuário tem acesso, caso sim acessa o sistema caso contrario não, ( mas esta parte já tenho em outro projeto ), agora quanto as funcionalidades estou fazendo este teste com um cadastro simples de cliente para iniciar.

    Estou anexando o script do banco caso precise

    USE [master]
    GO
    /****** Object:  Database [AcessoDadosSqlServer]    Script Date: 10/02/2015 11:07:53 ******/
    CREATE DATABASE [AcessoDadosSqlServer]
     CONTAINMENT = NONE
     ON  PRIMARY 
    ( NAME = N'AcessoDadosSqlServer', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\AcessoDadosSqlServer.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
     LOG ON 
    ( NAME = N'AcessoDadosSqlServer_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\AcessoDadosSqlServer_log.ldf' , SIZE = 4224KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET COMPATIBILITY_LEVEL = 120
    GO
    IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
    begin
    EXEC [AcessoDadosSqlServer].[dbo].[sp_fulltext_database] @action = 'enable'
    end
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET ANSI_NULL_DEFAULT OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET ANSI_NULLS OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET ANSI_PADDING OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET ANSI_WARNINGS OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET ARITHABORT OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET AUTO_CLOSE OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET AUTO_SHRINK OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET AUTO_UPDATE_STATISTICS ON 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET CURSOR_CLOSE_ON_COMMIT OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET CURSOR_DEFAULT  GLOBAL 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET CONCAT_NULL_YIELDS_NULL OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET NUMERIC_ROUNDABORT OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET QUOTED_IDENTIFIER OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET RECURSIVE_TRIGGERS OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET  DISABLE_BROKER 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET DATE_CORRELATION_OPTIMIZATION OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET TRUSTWORTHY OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET ALLOW_SNAPSHOT_ISOLATION OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET PARAMETERIZATION SIMPLE 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET READ_COMMITTED_SNAPSHOT OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET HONOR_BROKER_PRIORITY OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET RECOVERY FULL 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET  MULTI_USER 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET PAGE_VERIFY CHECKSUM  
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET DB_CHAINING OFF 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF ) 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET TARGET_RECOVERY_TIME = 0 SECONDS 
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET DELAYED_DURABILITY = DISABLED 
    GO
    EXEC sys.sp_db_vardecimal_storage_format N'AcessoDadosSqlServer', N'ON'
    GO
    USE [AcessoDadosSqlServer]
    GO
    /****** Object:  Table [dbo].[tblCliente]    Script Date: 10/02/2015 11:07:53 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_PADDING ON
    GO
    CREATE TABLE [dbo].[tblCliente](
    	[IdCliente] [int] IDENTITY(1,1) NOT NULL,
    	[Nome] [varchar](100) NOT NULL,
    	[DataNascimento] [datetime] NOT NULL,
    	[Sexo] [bit] NOT NULL,
    	[LimiteCompra] [decimal](18, 2) NOT NULL,
     CONSTRAINT [PK_tblCliente] PRIMARY KEY CLUSTERED 
    (
    	[IdCliente] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    SET ANSI_PADDING OFF
    GO
    /****** Object:  StoredProcedure [dbo].[uspClienteAlterar]    Script Date: 10/02/2015 11:07:53 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE PROCEDURE [dbo].[uspClienteAlterar]
    @IdCliente int,
    @Nome varchar(100),
    @DataNascimento datetime,
    @Sexo bit,
    @LimiteCompra decimal(18,2)
    AS
    BEGIN
    
    	UPDATE tblCliente
    	SET
    		Nome = @Nome,
    		DataNascimento = @DataNascimento,
    		Sexo = @Sexo,
    		LimiteCompra = @LimiteCompra
    	WHERE 
    		IdCliente = @IdCliente
    
    	SELECT @IdCliente AS Retorno
    
    END
    
    
    
    GO
    /****** Object:  StoredProcedure [dbo].[uspClienteConsultarPorId]    Script Date: 10/02/2015 11:07:53 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE PROCEDURE [dbo].[uspClienteConsultarPorId]
    @IdCliente int
    AS
    BEGIN
    
    	SELECT 
    			IdCliente,
    			Nome,
    			DataNascimento,
    			Sexo,
    			LimiteCompra
    	FROM
    			tblCliente With(Nolock)
    		WHERE 
    				IdCliente = @IdCliente
    
    END
    
    
    GO
    /****** Object:  StoredProcedure [dbo].[uspClienteConsultarPorNome]    Script Date: 10/02/2015 11:07:53 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE PROCEDURE [dbo].[uspClienteConsultarPorNome]
    @Nome varchar(100)
    AS
    BEGIN
    
    	SELECT 
    			IdCliente,
    			Nome,
    			DataNascimento,
    			Sexo,
    			LimiteCompra
    	FROM
    			tblCliente With(Nolock)
    		WHERE 
    				Nome LIKE '%' + @Nome + '%'
    
    END
    
    
    GO
    /****** Object:  StoredProcedure [dbo].[uspClienteExcluir]    Script Date: 10/02/2015 11:07:53 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE PROCEDURE [dbo].[uspClienteExcluir]
    @IdCliente int
    AS
    BEGIN
    
    	DELETE FROM 
    			tblCliente
    		WHERE 
    				IdCliente = @IdCliente
    
    		SELECT @IdCliente AS Retorno
    END
    
    
    GO
    /****** Object:  StoredProcedure [dbo].[uspClienteInserir]    Script Date: 10/02/2015 11:07:53 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    
    
    CREATE PROCEDURE [dbo].[uspClienteInserir]
    @Nome varchar(100),
    @DataNascimento datetime,
    @Sexo bit,
    @LimiteCompra decimal(18,2)
    AS
    BEGIN
    
    	INSERT INTO tblCliente
    	(
    		Nome,
    		DataNascimento,
    		Sexo,
    		LimiteCompra
    	)
    
    	VALUES
    	(
    		@Nome,
    		@DataNascimento,
    		@Sexo,
    		@LimiteCompra
    	)
    
    	SELECT @@IDENTITY AS Retorno
    
    END
    
    
    
    
    GO
    USE [master]
    GO
    ALTER DATABASE [AcessoDadosSqlServer] SET  READ_WRITE 
    GO
    


    Rodrigo Peripato


    • Editado RodriP terça-feira, 10 de fevereiro de 2015 13:09
    terça-feira, 10 de fevereiro de 2015 13:04
  • Boa tarde, Mr. GMSOFT

    Consegue me ajudar?

    at

    RodriP


    Rodrigo Peripato

    quarta-feira, 4 de março de 2015 17:13
  • Vou dar uma olhadinha, vou pegar seu script

    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    quarta-feira, 4 de março de 2015 19:08
  • Caso tenha conseguido a solução finalize sua Thread marcando a resposta

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    domingo, 28 de junho de 2015 14:20
  • Bom dia Mr. GMSOFT

    Ainda não consegui, fazer da forma que preciso, por este motivo não finalizei.

    Obrigado


    Rodrigo Peripato

    terça-feira, 7 de julho de 2015 13:56
  • na questão da string de conexao da uma olhada aqui http://www.connectionstrings.com/
    terça-feira, 7 de julho de 2015 16:38