Excepção quando tento aceder ao uma stored procedure através de uma windows Form
|
21-04-2010, 13:24
Mensagem: #1
|
|||
|
|||
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? |
|||
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 |
|||
21-04-2010, 14:00
Mensagem: #3
|
|||
|
|||
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] |
|||
« Mais Antigo | Mais Recente »
|
Utilizadores a ver este tópico: 2 Visitante(s)