COMO COMPARAR STRINGS IGNORANDO LETRAS MAIUSCULAS
pessoal estou desenvolvendo um aplicativo onde o usuario cria as tabelas no banco de dados. estou precisando comparar o nome da tabela que o usuario esta criando para ver se já existe no banco, para isto eu preciso comparar o nome que o usuario digitou em um textbox com as tabelas que já existem no banco. até tudo bem, se é digitado [Ô]Visa[Ô] meu codigo só comparar igual esta na string e não [Ô]visa[Ô] ou [Ô]VISA[Ô]. existe como comparar as strings ignorando as maiusculas
Veja se isso te ajuda:
http://www.w3schools.com/sql/sql_like.asp
http://www.w3schools.com/sql/sql_func_ucase.asp
Qualquer coisa coloque como você está fazendo sua consulta aqui pra analisarmos.
vlw
http://www.w3schools.com/sql/sql_like.asp
http://www.w3schools.com/sql/sql_func_ucase.asp
Qualquer coisa coloque como você está fazendo sua consulta aqui pra analisarmos.
vlw
deveria desmarcar na instalaçao do banco de dados a opção case insensitive eu acho q assim ajuda um pouco vc
na verdade eu tenho um textbox onde é digitado o nome de uma conta que vai ser criado uma tabela no banco de dados com este nome. antes de criar a tabela faço uma consulta no banco para ver se já existe alguma tabela com o nome digitado no textbox
exemplo:
se eu tenho uma tabela do banco de dados=Visa e digitar [Ô]visa[Ô] no textbox a function abaixo vai retornar false e vai executar o codigo para criar uma tabela no banco, porém vai gerar erro porque já existe a tabela Visa, o que eu preciso é uma forma de comparar a string com o nome das tabelas ignorando as letras maiusculas.
Public Function VerificaSeTabelaExiste(ByVal strNomeTabela As String) As Boolean
Dim tabela As New DataTable
Dim SQL As String
Sql = [Ô]SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = [ô]BASE TABLE[ô] ORDER BY TABLE_TYPE[Ô]
Try
Dim da As New SqlDataAdapter(SQL, Strcon)
da.Fill(tabela)
For Each dr As DataRow In tabela.Rows
If dr([Ô]TABLE_NAME[Ô]).ToString = strNomeTabela Then
Return True
End If
Next
Return False
Catch ex As Exception
MessageBox.Show([Ô]ERRO [Ô] & ex.Message, [Ô]Verifica tabela[Ô])
Return False
End Tr
End Function
o codigo para criar a tabela é o seguinte:
Dim sql As String = [Ô]CREATE TABLE [Ô] + strNomeTabela + [Ô] (ID int IDENTITY(1,1) NOT NULL , Data date NULL, Gastar money NULL, Pagar money NULL, Historico varchar(50) NOT NULL, Categoria varchar(50) NULL, Limite money NULL, Vencimento date NULL, Saldo money NULL)[Ô]
Dim Con As New SqlConnection(Strcon)
Dim cmd As New SqlCommand(Sql, Con)
Con.Open()
Try
cmd.ExecuteNonQuery()
Catch excp As Exception
Throw
End Try
Con.Close()
exemplo:
se eu tenho uma tabela do banco de dados=Visa e digitar [Ô]visa[Ô] no textbox a function abaixo vai retornar false e vai executar o codigo para criar uma tabela no banco, porém vai gerar erro porque já existe a tabela Visa, o que eu preciso é uma forma de comparar a string com o nome das tabelas ignorando as letras maiusculas.
Public Function VerificaSeTabelaExiste(ByVal strNomeTabela As String) As Boolean
Dim tabela As New DataTable
Dim SQL As String
Sql = [Ô]SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = [ô]BASE TABLE[ô] ORDER BY TABLE_TYPE[Ô]
Try
Dim da As New SqlDataAdapter(SQL, Strcon)
da.Fill(tabela)
For Each dr As DataRow In tabela.Rows
If dr([Ô]TABLE_NAME[Ô]).ToString = strNomeTabela Then
Return True
End If
Next
Return False
Catch ex As Exception
MessageBox.Show([Ô]ERRO [Ô] & ex.Message, [Ô]Verifica tabela[Ô])
Return False
End Tr
End Function
o codigo para criar a tabela é o seguinte:
Dim sql As String = [Ô]CREATE TABLE [Ô] + strNomeTabela + [Ô] (ID int IDENTITY(1,1) NOT NULL , Data date NULL, Gastar money NULL, Pagar money NULL, Historico varchar(50) NOT NULL, Categoria varchar(50) NULL, Limite money NULL, Vencimento date NULL, Saldo money NULL)[Ô]
Dim Con As New SqlConnection(Strcon)
Dim cmd As New SqlCommand(Sql, Con)
Con.Open()
Try
cmd.ExecuteNonQuery()
Catch excp As Exception
Throw
End Try
Con.Close()
Compare as duas strings como sendo todas as letras em caixa alta.
Exemplo:
Exemplo:
If dr([Ô]TABLE_NAME[Ô]).ToString.ToUpper() = strNomeTabela.ToUpper() Then
Return True
End If
Pode usar também o método Equals da string
Outra coisa, se você usa só o campo TABLE_NAME não faça um SELECT *, coloque o nome do campo no SELECT, e de preferencia use um SqlDataReader que é bem mais simples e mais leve do que usar um DataAdapter e DataSet para algo tão simples assim
If dr([Ô]TABLE_NAME[Ô]).ToString.Equals(strNomeTabela, StringComparison.OrdinalIgnoreCase) Then
Return True
End If
Outra coisa, se você usa só o campo TABLE_NAME não faça um SELECT *, coloque o nome do campo no SELECT, e de preferencia use um SqlDataReader que é bem mais simples e mais leve do que usar um DataAdapter e DataSet para algo tão simples assim
ok funcionou. Valeu pela dica.
Tópico encerrado , respostas não são mais permitidas