Añadir datos

17/10/2005 - 17:37 por Jorge | Informe spam
Hola a todos:

Estoy buscando por manuales de como añadir datos a traves de Sql y lo unico
que encuentro es el de leer datos, lo de añadir tan solo he encontrado de
que se puede añadir sin Sql, pero a mi tan solo me interesa hacerlo por Sql.

La bd es un bd Sql Server 2000

¿Alguien tiene algúna idea, algún sitio donde encontrar algo de esto,...?

Gracias por vuestra colaboracion
 

Leer las respuestas

#1 Jesús López
17/10/2005 - 19:13 | Informe spam
Para añadir datos a una tabla de una base de datos de SQL Server se usa la
instrucción INSERT.

http://msdn.microsoft.com/library/e...3_1kz8.asp

Para ejecutar una instrucción INSERT desde VB.NET puedes usar un
OleDbCommand o preferiblemente un SqlCommand. Es recomendable que la
instrucción INSERT esté parametrizada en vez de construida en tiempo de
ejecución a base de concatenar cadenas. Pero aún mejor es usar un
procedimiento almacenado que contenga la instrucción INSERT en vez de
ejecutar directamente esta instrucción. Si te interesa conocer las razones
por las que es mejor usar un procedimiento almacenado que una instrucción
SQL o las razones por las que es mejor usar una instrucción parametrizada
que una instrucción construida en tiempo de ejecución a base de concatenar
cadenas, háznoslo saber.

Por ejemplo, considera que tenemos la siguiente tabla:

CREATE TABLE Contactos
(
IdContacto int identity(1,1) primary key,
Nombre varchar(50),
Dirección varchar(20),
Tfno varchar(10)
)

Podríamos usar el siguiente batch (conjunto de instrucciones SQL)
parametrizado para añadir un contacto y obtener el valor del IdContacto
(que es autonumérico) asignado por SQL Server:


INSERT INTO Contactos(Nombre, Dirección, Tfno) VALUES(@Nombre, @Dirección,
@Tfno);
SELECT SCOPE_IDENTITY() As IdContacto

pero mejor sería usar el siguiente procedimiento almacenado:

CREATE PROCEDURE spAñadirContacto
@IdContacto int output,
@Nombre varchar(50),
@Dirección varchar(50),
@Tfno varchar(10)
AS
INSERT INTO Contactos(Nombre, Dirección, Tfno)
VALUES(@Nombre, @Dirección, @Tfno)
SET @IdContacto = SCOPE_IDENTITY()
GO

En VB.NET podríamos crear una clase para gestionar contactos (añadir,
eliminar, modificar, etc). Aquí tenemos la clase con el método Añadir
implementado:

Public Class GestionContactos
Private cn As New SqlConnection("Data Source=(local);Initial
Catalog=Pruebas;Integrated Security=SSPI")

Private mCmdAñadirContacto As SqlCommand
Private ReadOnly Property CmdAñadirContacto() As SqlCommand
Get
If mCmdAñadirContacto Is Nothing Then
mCmdAñadirContacto = New SqlCommand("spAñadirContacto", cn)
mCmdAñadirContacto.CommandType = CommandType.StoredProcedure
With mCmdAñadirContacto.Parameters
.Add("@IdContacto", SqlDbType.Int).Direction =
ParameterDirection.Output
.Add("@Nombre", SqlDbType.VarChar, 50)
.Add("@Dirección", SqlDbType.VarChar, 50)
.Add("@Tfno", SqlDbType.VarChar, 10)
End With
End If
Return mCmdAñadirContacto
End Get
End Property

Public Function AñadirContacto(ByVal Nombre As String, ByVal Dirección
As String, ByVal Tfno As String) As Integer
Me.cn.Open()
Dim IdContacto As Integer = 0
With Me.CmdAñadirContacto
.Parameters("@Nombre").Value = Nombre
.Parameters("@Dirección").Value = Dirección
.Parameters("@Tfno").Value = Tfno
.ExecuteNonQuery()
IdContacto = .Parameters("@IdContacto").Value
End With
Me.cn.Close()
Return IdContacto
End Function


End Class

NOTA: podría parecer que yo recomiendo usar clases de este tipo para manejar
el acceso a datos. Esa no es mi intención, en realidad yo casi siempre uso
DataSets con tipo y SqlDataAdapters para el acceso a datos en aplicaciones
Windows Forms cliente-servidor y para servicios Web ASP.NET que van a ser
consumidos por aplicaciones Windows Forms. Los comandos de los
SqlDataAdapters son casi siempre procedimientos almacenados. Sin embargo
para aplicaciones Web ASP.NET, sí que encuentro este modelo bastante útil.

Por cierto, me parece muy raro que hayas encontrado que se pueden añadir
datos a una base de datos de SQL Server sin usar directa o indirectamente
instrucciones SQL. Las únicas formas que conozco de añadir datos a una base
de datos de SQL Server sin usar la instrucción INSERT corresponden a las
cargas masivas de datos que pueden realizarse por medio de:

(1) la instrucción BULK INSERT
(2) La herramienta de línea de comandos bcp
(3) El interfaz OLE DB IFastLoad
(4) La clase de la .NET Framework 2.0 SqlBulkCopy
(5) El componente COM SQLXMLBulkLoad perteneciente a SQLXML
(6) Paquetes DTS (Data Transformation Services) de SQL Server 2000
(7) Paquetes SSIS (SQL Server Integration Services) de SQL Server 2005

Si la forma que has encontrado no corresponde a ninguna de las que acabo de
enumerar, seguro que de alguna manera está usando la instrucción INSERT.


"Jorge" <@> escribió en el mensaje
news:%
Hola a todos:

Estoy buscando por manuales de como añadir datos a traves de Sql y lo
unico que encuentro es el de leer datos, lo de añadir tan solo he
encontrado de que se puede añadir sin Sql, pero a mi tan solo me interesa
hacerlo por Sql.

La bd es un bd Sql Server 2000

¿Alguien tiene algúna idea, algún sitio donde encontrar algo de esto,...?

Gracias por vuestra colaboracion

Preguntas similares