Inquiridor
String Conexão

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
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
-
-
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 -
-
-
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
-
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""); }
-
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
-
-
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
-
-
-
-
-