Usuário com melhor resposta
BD não atualizando ao utilizar caminho relativo para String de Conexão

Pergunta
-
Olá, como o título diz sempre que eu utilizo o caminho relativo do BD como string de conexão eu consigo realizar as operações básicas, porém quando reinicio o sistema nada do que eu fiz é mantido, nem mesmo as chaves primárias seriais do banco são incrementada. É como se os dados que inseri nunca tivessem sido gravados no BD.
private string strcon = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=" + Application.StartupPath + "\Database\DB_SAOAS.mdf;Integrated Security=True";
Entretanto, se utilizo o caminho absoluto (abaixo), os dados são guardados normalmente...
private string strcon = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Fulano\Sistema\Database\DB_System.mdf;Integrated Security=True";
Eu necessito do caminho relativo para instalar o sistema no computador do usuário... Se houver outro meio de resolver isso, ficaria grato.
Para referência, utilizo Windows 8.1, Microsoft Visual Studio Professional 2012 com SQL Server que vem incluido nele.
Me desculpem se postei errado, é meu primeiro post...
Respostas
-
Possivelmente não é a melhor forma, porém funciona (acredito que funcionaria em produção também):
string pathToExe = Application.StartupPath; var dirName = new DirectoryInfo(pathToExe).Name; pathToExe = dirName.Equals("Debug") || dirName.Equals("Release") ? Directory.GetParent(pathToExe).Parent.FullName : pathToExe; MessageBox.Show(pathToExe);
Ele verifica se a pasta "atual" é chamada Debug ou Release e pega o "avô" deste diretório; no caso: o root.
Att., Rafael Simor
- Marcado como Resposta Bruno CM terça-feira, 24 de novembro de 2015 19:06
Todas as Respostas
-
Seu banco é criado toda vez que aplicação é iniciada? Ou é estático? Se for estático, você não precisa usar o attach toda vez, basta ler a string, ou então você talvez não esteja salvado os dados no banco corretamente, verifique se os dados que você está inserindo está sendo salvo no BD!
-
-
O banco é estático, entretanto eu não conheço o diretório que ele ficará instalado no computador do usuário, por isso preciso do caminho dinâmico.
Como disse, quando uso o caminho absoluto, ele funciona normalmente, a única coisa que mudei foi usar o Application.StartUpPath para obter o caminho dinâmico, e quando o faço o BD para de funcionar gravar os dados.
- Marcado como Resposta Levi DomingosModerator terça-feira, 24 de novembro de 2015 16:11
- Não Marcado como Resposta Levi DomingosModerator terça-feira, 24 de novembro de 2015 16:12
-
-
Possivelmente não é a melhor forma, porém funciona (acredito que funcionaria em produção também):
string pathToExe = Application.StartupPath; var dirName = new DirectoryInfo(pathToExe).Name; pathToExe = dirName.Equals("Debug") || dirName.Equals("Release") ? Directory.GetParent(pathToExe).Parent.FullName : pathToExe; MessageBox.Show(pathToExe);
Ele verifica se a pasta "atual" é chamada Debug ou Release e pega o "avô" deste diretório; no caso: o root.
Att., Rafael Simor
- Marcado como Resposta Bruno CM terça-feira, 24 de novembro de 2015 19:06
-
-
Possivelmente não é a melhor forma, porém funciona (acredito que funcionaria em produção também):
string pathToExe = Application.StartupPath; var dirName = new DirectoryInfo(pathToExe).Name; pathToExe = dirName.Equals("Debug") || dirName.Equals("Release") ? Directory.GetParent(pathToExe).Parent.FullName : pathToExe; MessageBox.Show(pathToExe);
Ele verifica se a pasta "atual" é chamada Debug ou Release e pega o "avô" deste diretório; no caso: o root.
Att., Rafael Simor