Forum Pplware

Versão Completa: Excepção quando tento aceder ao uma stored procedure através de uma windows Form
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Boa tarde,

Eu estou a tentar aceder a uma stored procedure no sql server 2008, através de uma aplicação C#, para fazer update de um registo, só que dá-me a seguinte excepção.

OleDb Connection Error:System.Data.OleDb.OleDbException: Syntax error or
access violation at
System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) at
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForMultpleResults(tagDBPARAMS
dbParams, Object& executeResult) at
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) at
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior,
Object& executeResult) at
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior
behavior, String method) at
System.Data:OleDb.OleDbCommand.ExecuteNonQuery()

Alguém me pode ajudar?
C# não é a minha especialidade, mas se mostrares o código a que esses erros se referem, talvez alguém te consiga ajudar, porque assim sem ver código, não.
ok. em anexo segue o código C# e stored procedure:

Stored Procedure
USE [Patient]
GO
/****** Object: StoredProcedure [dbo].[UpdatePatientTuple] Script Date: 04/21/2010 12:21:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[UpdatePatientTuple]
-- Add the parameters for the stored procedure here
@DoencasPai nvarchar(MAX),
@DoencasMae nvarchar(MAX),
@DoencasIrmaos nvarchar(MAX),
@DoencasFilhos nvarchar(MAX),
@DoencasOutros nvarchar(MAX),
@ID int,
@Infancia nvarchar(MAX),
@Adulto nvarchar(MAX),
@Processo nvarchar(MAX),
@SNS nvarchar(MAX),
@Rh nvarchar(MAX),
@Tipo nvarchar(MAX),
@Alimentares nvarchar(MAX),
@Drogas nvarchar(MAX),
@Alcool nvarchar(MAX),
@Tabaco nvarchar(MAX),
@Name nvarchar(MAX),
@BirthDate nvarchar(MAX),
@Gender nvarchar(MAX),
@MaritalStatus nvarchar(MAX),
@Country nvarchar(MAX),
@Scholarity nvarchar(MAX),
@Job nvarchar(MAX),
@BI nvarchar(MAX),
@Morada nvarchar(MAX),
@Medicamento nvarchar(MAX),
@DataInicio nvarchar(MAX),
@DataFim nvarchar(MAX),
@Vacina nvarchar(MAX),
@Data nvarchar(MAX),
@error int OUTPUT
AS
BEGIN TRAN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert UPDATE for procedure here
UPDATE [Patient].[dbo].[Patient]
SET [Name] = @Name
,[BirthDate] = @BirthDate
,[Gender] = @Gender
,[MaritalStatus] = @MaritalStatus
,[Country] = @Country
,[Scholarity] = @Scholarity
,[Job] = @Job
,[BI] = @BI
,[Morada] = @Morada
WHERE Patient.ID = @ID

IF (@@ERROR <> 0) GOTO ERR_HANDLER




UPDATE [Patient].[dbo].[AntecedentesFamiliares]
SET
[DoencasPai] = @DoencasPai
,[DoencasMae] = @DoencasMae
,[DoencasIrmaos] = @DoencasIrmaos
,[DoencasFilhos] = @DoencasFilhos
,[DoencasOutros] = @DoencasOutros
WHERE AntecedentesFamiliares.ID_Pat = @ID

IF (@@ERROR <> 0) GOTO ERR_HANDLER

UPDATE [Patient].[dbo].[AntepassadosPessoais]
SET
[Infancia] = @Infancia
,[Adulto] = @Adulto
WHERE AntepassadosPessoais.ID_Pat = @ID

IF (@@ERROR <> 0) GOTO ERR_HANDLER

UPDATE [Patient].[dbo].[DadosProcesso]
SET
[Processo] = @Processo
,[SNS] = @SNS
WHERE DadosProcesso.ID_Pat = @ID

IF (@@ERROR <> 0) GOTO ERR_HANDLER

UPDATE [Patient].[dbo].[GrupoSanguineo]
SET
[Rh] = @Rh
,[Tipo] = @Tipo
WHERE GrupoSanguineo.ID_Pat = @ID

IF (@@ERROR <> 0) GOTO ERR_HANDLER

UPDATE [Patient].[dbo].[Habits]
SET
[Alimentares] = @Alimentares
,[Drogas] = @Drogas
,[Alcool] = @Alcool
,[Tabaco] = @Tabaco
WHERE Habits.ID_Pat = @ID

IF (@@ERROR <> 0) GOTO ERR_HANDLER

UPDATE [Patient].[dbo].[TerapeuticaPat]
SET
[Medicamento] = @Medicamento
,[DataInicio] = @DataInicio
,[DataFim] = @DataFim
WHERE TerapeuticaPat.ID_Pat = @ID

IF (@@ERROR <> 0) GOTO ERR_HANDLER

UPDATE [Patient].[dbo].[Vacinacao]
SET
[Vacina] = @Vacina
,[Data] = @Data
WHERE Vacinacao.Pat_ID = @ID

IF (@@ERROR <> 0) GOTO ERR_HANDLER
COMMIT TRAN

RETURN 0

ERR_HANDLER:

ROLLBACK TRAN
RETURN 1
GO

C# Code:

private void UpdatePatientData()
{
try
{
#region Database
string connectionString = ConnectionString.ReadConnectiongString();
OleDbConnection conn = new OleDbConnection(connectionString);
OleDbCommand cmd = new OleDbCommand();


#region Parameters
cmd.Parameters.AddWithValue("@DoencasPai", "a");
cmd.Parameters.AddWithValue("@DoencasMae","a");
cmd.Parameters.AddWithValue("@DoencasIrmaos","a");
cmd.Parameters.AddWithValue("@DoencasFilhos","a");
cmd.Parameters.AddWithValue("@DoencasOutros","a");
cmd.Parameters.AddWithValue("@ID", "55");
cmd.Parameters.AddWithValue("@Infancia","a");
cmd.Parameters.AddWithValue("@Adulto","a");
cmd.Parameters.AddWithValue("@Processo","a");
cmd.Parameters.AddWithValue("@SNS","a");
cmd.Parameters.AddWithValue("@Rh","a");
cmd.Parameters.AddWithValue("@Tipo","a");
cmd.Parameters.AddWithValue("@Alimentares ","a");
cmd.Parameters.AddWithValue("@Drogas","a");
cmd.Parameters.AddWithValue("@Alcool","a");
cmd.Parameters.AddWithValue("@Tabaco","a");
cmd.Parameters.AddWithValue("@Name","a");
cmd.Parameters.AddWithValue("@BirthDate","a");
cmd.Parameters.AddWithValue("@Gender","a");
cmd.Parameters.AddWithValue("@MaritalStatus","a");
cmd.Parameters.AddWithValue("@Country","a");
cmd.Parameters.AddWithValue("@Scholarity","a");
cmd.Parameters.AddWithValue("@Job","a");
cmd.Parameters.AddWithValue("@BI","a");
cmd.Parameters.AddWithValue("@Morada","a");
cmd.Parameters.AddWithValue("@Medicamento","a");
cmd.Parameters.AddWithValue("@DataInicio","a");
cmd.Parameters.AddWithValue("@DataFim","a");
cmd.Parameters.AddWithValue("@Vacina","a");
cmd.Parameters.AddWithValue("@Data","a");
cmd.Parameters.AddWithValue("@error", "0");
#endregion

cmd.Connection = conn;
cmd.CommandText = "EXECUTE dbo.UpdatePatientTuple '?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?',​'?','?','?','?','?','?','?','?','?','?','?'";
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
cmd.ExecuteNonQuery();
int errorReponse = Int32.Parse(cmd.Parameters["@error"].Value.ToString());

if(errorReponse == 1)
{
MessageBox.Show("Paciente Actualizado com Sucesso");
}
else
{
MessageBox.Show("Erro na actualização do paciente");
}
#endregion

}
catch (Exception e)
{
MessageBox.Show(e.ToString(),"Error in Update");
}[/php]






(21-04-2010 13:52)Bruno Bernardino Escreveu: [ -> ]C# não é a minha especialidade, mas se mostrares o código a que esses erros se referem, talvez alguém te consiga ajudar, porque assim sem ver código, não.

[php]
URL's de Referência