Problemas al crear una base de datos sql en VB.NET

Iniciado por HacKreatorz, 17 Febrero 2010, 07:54 AM

0 Miembros y 1 Visitante están viendo este tema.

HacKreatorz

Buenas, estoy creando una aplicación en VB.NET 2008 y necesito que al pulsar un botón se cree una base de datos. Estoy siguiendo un tutorial de otra web. Estoy usando este código, modifiqué bastante el que salía en el tuto y se me quedó así:

CitarDim str As String
                Dim myConn As SqlConnection = New SqlConnection("Server=127.0.0.1;" & _
                                                                "uid=sa;pwd=;database=master")
                str = "CREATE DATABASE MyDatabase ON PRIMARY " & _
                      "(NAME = MyDatabase_Data, " & _
                      " FILENAME = 'C:\Archivos de programa\AllDataBase Manager\Bases de Datos\'" & nombreBD & "'\MyDatabaseData.mdf', " & _
                      " SIZE = 2MB, " & _
                      " MAXSIZE = 10MB, " & _
                      " FILEGROWTH = 10%) " & _
                      " LOG ON " & _
                      "(NAME = MyDatabase_Log, " & _
                      " FILENAME = 'C:\Archivos de programa\AllDataBase Manager\Bases de Datos\'" & nombreBD & "'\ MyDatabaseLog.ldf', " & _
                      " SIZE = 1MB, " & _
                      " MAXSIZE = 5MB, " & _
                      " FILEGROWTH = 10%) "

                Dim myCommand As SqlCommand = New SqlCommand(str, myConn)
                Try
                    myConn.Open()
                    myCommand.ExecuteNonQuery()
                    MessageBox.Show("   B ase de Datos creada correctamente", _
                                    "MyProgram", MessageBoxButtons.OK, _
                                     MessageBoxIcon.Information)
                Catch ex As Exception
                    MessageBox.Show(ex.ToString())
                    LabelInfoBD.Text = "Error al crear la base de datos"
                Finally
                    If (myConn.State = ConnectionState.Open) Then
                        myConn.Close()
                    End If
                End Try
                LabelInfoBD.Refresh()
            End If


No me funciona el código, le doy al botón pero se queda pillado, no se que es lo que está mal, no se si es el servidor que puse que me parece que es uno localhost que es lo que quiero... He buscado en muchísimas webs, en español y en inglés y ya no sé que hacer.

Grave

Hace tiempo que no toco VB.NET pero creo que te falta source=.\$SQLSERVER
"y el conocimiento os hara libres"

Module Console1
   Console.Write("Hello Word")
   Console.ReadLine()
End Module
http://aion.cr0n0triger.operaunite.com/

HacKreatorz

Y eso donde lo tendria que poner?? Y que hace exactamente??

Gracias por responder, es la primera vez que me responden xDDD

Shell Root

Dentro de la variable de conexión
Código (vbnet) [Seleccionar]
Dim myConn As SqlConnection = New SqlConnection("Server=127.0.0.1;uid=sa;pwd=;database=master")

Deberia ser así: (Ejemplo en SQL Server 2008)
Código (vbnet) [Seleccionar]
Public strcnn As New SqlConnection("Data Source=ALEX\SHELLROOT;Initial Catalog=BD_HackLAB;Integrated Security=SSPI;")

Donde dicé Data Source=ALEX\SHELLROOT;, al momento de realizar la instalación, le podes asiganar el nombre de la instacia del SQL, por lo generar es Nombre_del_Equipo\SQLEXPRESS.

PD: http://www.connectionstrings.com/ Selecciona el Motor de Base de Datos que estas usando y mirás los String de Conexión
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

HacKreatorz

Bueno, cambié lo que me dijistes dejandolo asi:

Dim myConn As New SqlConnection("Data Source=TecnoPlanet\SQLEXPRESS;Initial Catalog=" & nombreBD & ";Integrated Security=SSPI;")

TecnoPlanet es el nombre de mi PC. Se sigue quedando pillado, he intentado colocar puntos de interrupcion (acabo de descubrirlos xDD) y he visto que despeus de esa linea no se queda pillado sino despues de:

                str = "CREATE DATABASE MyDatabase ON PRIMARY " & _
                      "(NAME = MyDatabase_Data, " & _
                      " FILENAME = 'Bases de Datos\'" & nombreBD & "'\MyDatabaseData.mdf', " & _
                      " SIZE = 2MB, " & _
                      " MAXSIZE = 10MB, " & _
                      " FILEGROWTH = 10%) " & _
                      " LOG ON " & _
                      "(NAME = MyDatabase_Log, " & _
                      " FILENAME = 'Bases de Datos\'" & nombreBD & "'\ MyDatabaseLog.ldf', " & _
                      " SIZE = 1MB, " & _
                      " MAXSIZE = 5MB, " & _
                      " FILEGROWTH = 10%) "


Gracias por todo!

Shell Root

Aver, no dije DIRECTAMENTE, que era el Nombre_del_PC/SQLEXPRESS, es el nombre que le diste a la instancia del SQL, cuando se está instalando. Ahora, veo que el error no es en la conexion del SQL, sino al momento de crear la base de datos.

Leeté esto http://www.elguille.info/NET/adonet/Crear_una_base_de_datos_de_SQL_Server_mediante_codigo_de_Visual_Basic.htm

Saludos!
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

HacKreatorz

Ese tutorial fue el primero que vi, y vi lo que monta para elegir las instancias, pero  yo no quiero que deje elegir al usuario, sino que elija automaticamente el de sqlexpress (¿Para esto, le tengo que pedir a los usuarios que se instalen el programa este no?). Bueno, a partir de ese tutorial fui cambiando el codigo, le añadi esto que vi en otro tutorial porque pensé que  lo mejor así me funcionaría pero me siguió yendo igual:

  str = "CREATE DATABASE MyDatabase ON PRIMARY " & _
                      "(NAME = MyDatabase_Data, " & _
                      " FILENAME = 'Bases de Datos\'" & nombreBD & "'\MyDatabaseData.mdf', " & _
                      " SIZE = 2MB, " & _
                      " MAXSIZE = 10MB, " & _
                      " FILEGROWTH = 10%) " & _
                      " LOG ON " & _
                      "(NAME = MyDatabase_Log, " & _
                      " FILENAME = 'Bases de Datos\'" & nombreBD & "'\ MyDatabaseLog.ldf', " & _
                      " SIZE = 1MB, " & _
                      " MAXSIZE = 5MB, " & _
                      " FILEGROWTH = 10%) "


No sé si el error está ahi asi que si me puedes ayudar te lo agradeceria mucho.