Foros del Web » Programando para Internet » ASP Clásico »

¿Cómo conectarse a una base de datos de Sql Server 2000 desde ASP?

Estas en el tema de ¿Cómo conectarse a una base de datos de Sql Server 2000 desde ASP? en el foro de ASP Clásico en Foros del Web. ¿Qué código exacto se necesita para establecer la conexión?...
  #1 (permalink)  
Antiguo 06/02/2005, 22:42
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 4 meses
Puntos: 6
¿Cómo conectarse a una base de datos de Sql Server 2000 desde ASP?

¿Qué código exacto se necesita para establecer la conexión?
  #2 (permalink)  
Antiguo 07/02/2005, 02:28
Avatar de neivan  
Fecha de Ingreso: febrero-2005
Mensajes: 539
Antigüedad: 19 años, 4 meses
Puntos: 1
Mensaje

yo tengo por ejemplo esto

function conexion() as System.Data.SqlClient.SqlConnection
dim cn as System.Data.SqlClient.SqlConnection
cn=New System.Data.SqlClient.SqlConnection()
cn.ConnectionString="server=localhopst;User Id=nombre;Database=mibd"
cn.open()
cn.close()
return cn
end function

donde pone server pon tu no mbre de servidor , user nombre de usuario con permisos de lectira y modificacion para poder tratar tablas, si tiene un pasword habria que ponerlo tb con password= y database el nombre de la base de datos y ya tendras tu conexion hecha
  #3 (permalink)  
Antiguo 07/02/2005, 20:04
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 4 meses
Puntos: 6
Gracias por contestar.

-Un asunto: Por ejemplo, en la línea

Database=mibd

¿ahí se puede poner la ruta a la base de datos entre comillas simples o dobles?

Otra duda: ¿Luego llamo a la función conexion() así, escribiéndola tal cual, y ya está?

Y por último, en cuanto al código ASP, ¿hace falta especificar ASP JVScript u otro tipo?

Última edición por un_tio; 07/02/2005 a las 20:51
  #4 (permalink)  
Antiguo 07/02/2005, 21:08
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 4 meses
Puntos: 6
Además no lo veo nada claro. Yo pensaba que el código sería de este estilo, no sé si me has pasado el código para otra cosa:

Código:
basedatos ="ruta"
Set conexion = Server.CreateObject("ADODB.Connection")
conexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & basedatos & ";"
Set registros = conexion.Execute("SELECT * FROM campo")
  #5 (permalink)  
Antiguo 07/02/2005, 21:19
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 4 meses
Puntos: 6
La verdad es que parece mentira, que algo tan básico como conectarse a la base de datos, esté publicado en tan pocos sitios. He encontrado a uno que tenía mi mismo problema después de mucho buscar. Éste es el código que he encontrado:

Código:
<%
'* database server parameters
Dim serverIP '* ip adress
Dim serverPORT '* ip port
Dim serverDB '* catalog/database name
Dim serverLOGIN '* username
Dim serverPASSWORD '* password

'* set your variables here
serverIP = "192.168.100.1"
serverPORT = "1433" '* default port is 1433/TCP
serverDB = "Northwind"
serverLOGIN = "login"
serverPASSWORD = "pass"

'* open connection
Dim con
Set con = Server.CreateObject("ADODB.Connection")
con.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Persist Security Info=False;" & _
"Network Library=DBMSSOCN;" & _
"Data Source=" & serverIP & "," & serverPORT & ";" & _
"Initial Catalog=" & serverDB & ";" & _
"User ID=" & serverLOGIN & ";" & _
"Password=" & serverPASSWORD & ";" & _
"Connect Timeout=5;Pooling=False"
Call con.Open()
%>
Dudas:

-¿Qué IP poner si la base de datos está en el propio ordenador? ¿Es 127.0.0.0 (o era acabado en 1)? ¿O se pone localhost, como si fuera un número de IP?

-¿Se puede no poner puerto?

-¿En login y password, si es lo de windows, qué se pone si no tienes password? (de login supongo que el nombre de tu usuario de windows).

-Ahí la persona que lo escribió ha puesto un signo "_" detrás de cada "&", ¿eso es correcto, significa algo, o un mero error de transcripción?

-¿Cuál sería el código para cerrar la base de datos y la conexión (para Sql Server 2000, recuerdo)?

Última edición por un_tio; 07/02/2005 a las 21:25
  #6 (permalink)  
Antiguo 08/02/2005, 02:32
Avatar de neivan  
Fecha de Ingreso: febrero-2005
Mensajes: 539
Antigüedad: 19 años, 4 meses
Puntos: 1
Vamos haber,con lo que te he puesto te deberia hacer la conexion sin poner ni ip ni dada ya que esta en tu ordenador,y lo que esta dentro d elas comillas dobles no llebha comillas simples , y por supuesto hay otra forma de conectar con la bd aunque lo que me has puesto de Microsoft.Jet.OLEDB.4.0; es para access,.
yo tengo por ejemplo otra forma pora conectar con sql server que es en la conection string="Data source =servidor;Initial catalog=mibd;User Id=usuario;password=mipass"

Yo tengo mi conexion a sql server 2000 puesta como te he puesto al principio,me funciona perfectamente y la funcion conexion devuelve la conexion para cuando la kieras utilizar y cuando tienes mucho codigo es mejor organizarlo en funciones y metodos que dejaran tu codigo mas facil de entender:

Ejemplo con un dataset y un enlace a una lista desplegable
dim cn as System.Data.SqlClient.SqlConnection
cn=conexion()
cn.open()
dim ds as System.data.Dataset
ds=new System.data.Dataset
dim adap as System.Data.SqlClient.SqldataAdapter
adap=new System.Data.SqlClient.SqlDataAdapter("Select * from EMPRESAS",cn)
adap.Fill(ds,"TEMPRESAS")
dropdowlist1.datasource=ds.tables("TEPRESAS")
.....
cn.close
Otro ejemplo seria una insercion:
dim cn as System.Data.SqlClient.SqlConnection
cn=conexion()
cn.open()
DIM cmd AS System.Data.SqlClient.SqlCommand
cmd = New System.Data.SqlClient.sQLCommand()
cmd.CommandText = "INSERT INTO ALUMNOS VALUES (@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8,@p9,@p10,@p11)"
cmd.Parameters.Add("@p1", txtDni.text)
cmd.Parameters.Add("@p2", txtapellidos.Text)
cmd.Parameters.Add("@p3", txtnombre.Text)
cmd.Parameters.Add("@p4", txtDomicilio.Text)
cmd.Parameters.Add("@p5", ponernulos(txtcp.Text))
cmd.Parameters.Add("@p6", txtMunicipio.Text)
cmd.Parameters.Add("@p7", ponernulos(txttelefono1.Text))
cmd.Parameters.Add("@p8", ponernulos(txttelefono2.Text))
cmd.Parameters.Add("@p9", txtemail.Text)
cmd.Parameters.Add("@p10", txtfechanac.Text)
cmd.Parameters.Add("@p11", txtNivel.Text)
cmd.Connection = cn
'con control de errores
Try
N=cmd.ExecuteNonQuery()
label10.visible=true
label10.text="Alta realizada"
Catch ex As Exception
label10.visible=true
Label10.Text = ex.Message & EX.ERROR
End Try


Esto que te pongo lo tengo yo en mi codigo,como la funcion coexion q te he pasado antes.Haber si haces una prueba y te funciona.
  #7 (permalink)  
Antiguo 08/02/2005, 21:34
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 4 meses
Puntos: 6
He probado tu código, incluyendo el primer ejemplo de la lista desplegable, a pesar de que no es el tipo de código que busco (ahora luego te diré a qué me refiero), y me ha dado un error en la primera línea:

Cita:
Tipo de error:
Error de compilación de Microsoft VBScript (0x800A0400)
Se esperaba una instrucción
/sitio/TMPe8s1amnbg.asp, línea 10, columna 20
function conexion() as System.Data.SqlClient.SqlConnection
-------------------^
Dice que se esperaba una instrucción... Yo no sé si es que el código que me das es para otra cosa distinta del ASP convencional.

Vamos a ver, yo lo que quiero es un código sencillito de este estilo:

Código:
Dim Conex
'Creamos el objeto de conexion ahora...
Set Conex = Server.CreateObject ("ADODB.Connection")
Conex.Open "driver={SQL Server};server=mibase; database=./m.MDF; uid=sa;pwd=" 

SQL="select * from Zona"
Set objRS=Conex.Execute(SQL)
if not objRs.EOF then

Do while not objRS.EOF

response.write(objRS(0))
objRS.movenext
loop
end if
¿¿Alguien puede ayudarme?? Es OBDC, así que debo poner el DSN desde el panel de control y tal, y ya lo he hecho, llamándole mibase. ¿Qué debo poner en server, lo que he llamado desde el creador de sitios OBDC como "mibase"?

Otra forma de hacerlo es mediante OLEBD. También me valdría, pero no sé cómo hacerlo.

Por favor, cualquiera de las dos formas me valdría, OBDC u OLEBD. ¿¿¿Alguien puede indicarme qué código exacto se ha de usar???
  #8 (permalink)  
Antiguo 08/02/2005, 22:22
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 4 meses
Puntos: 6
Bueno la cosa ha avanzado.

Tengo este código (neivan tu código extraño ni me suena ni lo he visto en ningún sitio, ¿seguro que estás hablando de ASP "normal"?):
Código:
strconn = "Driver={SQL Server};Description=sqldemo;SERVER=127.0.0.1; UID=LoginID;PWD=Password;DATABASE=Database_Name
set conn = server.createobject("adodb.connection")
conn.open strconn
O incluso mejores. Pongo aquí esta página que seguro que le interesará a muchos:

http://www.gamarod.com.ar/articulos/articulos.asp?id=36

El caso es que he descubierto cómo registrar mi servidor, desde el propio programa SQL Server 2000 (no lo había hecho hasta ahora, y en ningún sitio de internet había leído que tuviese que hacerse). Ya coloco bien todo, el nombre del servidor y el nombre de la base de datos (que no el propio archivo!). Me falta muy poco ya para que funcione, y de hecho, el úinco error que me da ahora mismo es en el Login... ¡¡y pongo mi nombre de usuario de Windows!!

Me da este error:
Cita:
Tipo de error:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E4D)
[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'Usuario'. Reason: Not associated with a trusted SQL Server connection.
¿Qué puedo hacer?

Última edición por un_tio; 08/02/2005 a las 22:24
  #9 (permalink)  
Antiguo 09/02/2005, 01:08
Avatar de OYEME  
Fecha de Ingreso: marzo-2004
Ubicación: Lima
Mensajes: 307
Antigüedad: 20 años, 3 meses
Puntos: 1
hola tio bueno antes una cosa he visto uan conexion pero esa es para asp.net
me imagino que tu quieres para asp
la conexion es sencillisima = a la de vb
set cn = server.CreateObject("adodb.connection") ' la var de tipo coneection
set rs = server.CreateObject("adodb.recordset") ' la vra de tipo recorset
cn.Open "provider=sqloledb;uid=sa;database=tubase;server=. " 'abres la conexion
sql = "select * from tabla"
set rs=cn.Execute(sql) ' llenas el recordset

y eso es todo
donde tubasees el nombr de la base de datos server=. quierd ecir que ete estas conecatndo a tu misma pc (local)

ahora para accces seria: = solo cambias la conexion
cn.Open "provider=Microsoft.jet.oledb.4.0;data source=c:\ruta\tubase.mdb"
espero te sirva

PD: el usuario por defecto del sql es sa
__________________
http://www.luisariashidalgo.com
  #10 (permalink)  
Antiguo 09/02/2005, 11:04
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 4 meses
Puntos: 6
Ya está. Arreglado

La cosa era que no sabía qué poner en los campos (¿cuál es la ruta, o el nombre, a la base de datos? ¿cuál es la ruta al server? etc.), pero ahora ya lo sé. No me iba el login, y he tenido que habilitar todo desde el sql server para poder usar login de sql (si no no te dejaba, y con el de windows no me iba).

Resumiendo, no era tanto el código lo que me hacía falta (que ya había conseguido varios y sabía usarlos), SINO VER Y MODIFICAR DESDE EL PROPIO PROGRAMA SQL SERVER algunas cosas para que me pudiera funcionar.

Última edición por un_tio; 09/02/2005 a las 11:05
  #11 (permalink)  
Antiguo 13/02/2005, 20:57
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 4 meses
Puntos: 6
Por si ayuda a alguien, éste es el código que utilizo:

Código:
Set oConn=CreateObject("ADODB.Connection")

oConn.Open "Provider=SQLOLEDB; Data Source=(local); Initial Catalog=nombre_de_mi_base_de_datos; User Id=sa; Password=;"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 21:49.