Colocar Resposta 
 
Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
Excepção quando tento aceder ao uma stored procedure através de uma windows Form
21-04-2010, 13:24
Mensagem: #1
Windows Excepção quando tento aceder ao uma stored procedure através de uma windows Form
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?
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
21-04-2010, 13:52
Mensagem: #2
RE: Excepção quando tento aceder ao uma stored procedure através de uma windows Form
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.

BrunoBernardino.com
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
21-04-2010, 14:00
Mensagem: #3
Windows RE: Excepção quando tento aceder ao uma stored procedure através de uma windows Form
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]
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
Colocar Resposta 


Saltar Fórum:


Utilizadores a ver este tópico: 1 Visitante(s)