---
title: "problem att exekvera"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/167206-problem-att-exekvera"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Vinnaren"
published: "2007-12-12T16:39:46.000Z"
updated: "2007-12-13T16:58:49.000Z"
replies: 21
views: 771
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/167206-problem-att-exekvera"
---

# problem att exekvera

_Sida 1 av 2._

## #1 — Vinnaren, 2007-12-12T16:39Z

Har två olika metoder varav en fungerar. Så nu är min fråga, varför fungerar inte den andra??

Fungerar

```
                conn.Open();

                SqlDataAdapter da = new SqlDataAdapter("dbo.Delete", conn);
                da.SelectCommand.CommandType = CommandType.StoredProcedure;
                da.SelectCommand.Parameters.Add("@username", SqlDbType.NVarChar, 255).Value = sc.UserName;
                da.SelectCommand.Parameters.Add("@comID", SqlDbType.Int, 5).Value = comID;
                da.SelectCommand.ExecuteNonQuery();
```

 

Fungerar Inte

```
                conn.Open();

                SqlCommand cmd = new SqlCommand("dbo.Delete", conn);
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new SqlParameter("@username", SqlDbType.NVarChar, 255)).Value = sc.UserName;
                cmd.Parameters.Add(new SqlParameter("@comID", SqlDbType.Int, 5)).Value = comID;
                cmd.ExecuteNonQuery();
```

 

Vad kan det vara för fel på den undre?

Tacksam för all hjälp   :stud

Permalänk: https://www.webforum.nu/p/167206

## #2 — CatZ, 2007-12-12T16:44Z

/RED

Ursäkta mig... Den nedersta är till en parameteriserad fråga... den övre är till en stored procedure.

Permalänk: https://www.webforum.nu/p/2060702

## #3 — Vinnaren, 2007-12-12T16:46Z

nep, har även provat den, o den kraschar på                 cmd.ExecuteNonQuery();

Nott annat som kan vara fel   :q

Permalänk: https://www.webforum.nu/p/2060703

## #4 — CatZ, 2007-12-12T16:47Z

Jag tänkte fel, rätt svar står i förra inlägget.

Permalänk: https://www.webforum.nu/p/2060704

## #5 — Vinnaren, 2007-12-12T16:49Z

ok, men kan man inte anv stored procedure i en SqlCommand??

Permalänk: https://www.webforum.nu/p/2060705

## #6 — CatZ, 2007-12-12T16:57Z

Usch vad jag är trött, du kan göra som du gjorde fast du måste skapa parametern innan du lägger till den.

```
SqlParameter username = new SqlParameter("@username", SqlDbType.NVarChar, 255);
paramUsername.Value = sc.UserName;
SqlParameter comid = new SqlParameter("@comID", SqlDbType.Int, 5);
paramComid.Value = comID;
cmd.Parameters.Add(paramUsername);
cmd.Parameters.Add(paramComid);
```

Permalänk: https://www.webforum.nu/p/2060708

## #7 — CatZ, 2007-12-12T17:02Z

Jag använder en funktion för att skapa parametern som är lite smidigare om du vill göra på det nedre sättet. 

```
protected static SqlParameter pMaker(String parameterName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, Object Value)
{
	SqlParameter param;

	if(Size > 0)
	{
		param = new SqlParameter(parameterName, DbType, Size);
	}
	else
	{
		param = new SqlParameter(parameterName, DbType);
	}
	param.Direction = Direction;
	if (!(Direction == ParameterDirection.Output && Value == null))
	{
		param.Value = Value;
	}
	return param;
}
```

 Sedan gör som på det nedre sättet och anropar på följande vis 

```
 cmd.Parameters.Add(pMaker("@username", SqlDbType.NVarChar, 255, ParameterDirection.Input, sc.UserName))
```

Permalänk: https://www.webforum.nu/p/2060711

## #8 — Vinnaren, 2007-12-12T17:08Z

ok, tack. Men får inte:

```
                conn.Open();

                SqlCommand cmd = new SqlCommand("dbo.Delete", conn);
                cmd.CommandType = CommandType.StoredProcedure;

                SqlParameter paramUsername = new SqlParameter("@username", SqlDbType.NVarChar, 255);
                paramUsername.Value = sc.UserName;

                SqlParameter paramComid = new SqlParameter("@comID", SqlDbType.Int, 5);
                paramComid.Value = comID;

                cmd.Parameters.Add(paramUsername);
                cmd.Parameters.Add(paramComid); 
                
                cmd.ExecuteNonQuery();
```

 
att fungera.

får felmedelandet:
Procedure or function Delete has too many arguments specified.

men SP har:
	(
	@username varchar(255),
	@comID int
	)

Det vill sig inte   :r

Permalänk: https://www.webforum.nu/p/2060713

## #9 — CatZ, 2007-12-12T17:25Z

Hur ser din procedure ut då?

Permalänk: https://www.webforum.nu/p/2060714

## #10 — Vinnaren, 2007-12-12T17:27Z

```
ALTER PROCEDURE [dbo].[Delete] 
	(
	@username varchar(255),
	@comID int
	)
AS
DECLARE @ErrMsg varchar(50)
SET NOCOUNT ON

BEGIN TRAN
	BEGIN TRY
	

	Set @ErrMsg = 'Fel när kommentaren skulle tas bort'
	DELETE FROM comment WHERE comID = @comID

COMMIT TRAN
	END TRY
	BEGIN CATCH
		ROLLBACK TRAN
		RAISERROR(@ErrMsg,16,1)
	END CATCH
```

 

borde ju inte vara fel på den då det "andra" alternativet fungerar  :OO

Permalänk: https://www.webforum.nu/p/2060716

## #11 — Gladh, 2007-12-12T19:39Z

Testa följande istället

```
                SqlParameter paramUsername = new SqlParameter("@username", SqlDbType.VarChar, 255);
                paramUsername.Value = sc.UserName;

                SqlParameter paramComid = new SqlParameter("@comID", SqlDbType.Int);
                paramComid.Value = comID;
```

Det är skillnad på NVarchar och Varchar, samt att du inte bör skicka med en storlek på din int...

\- M

Permalänk: https://www.webforum.nu/p/2060735

## #12 — Vinnaren, 2007-12-12T19:56Z

tack, men det fungerade tyvärr inte häller   :( 

Får väll anv SqlDataAdapter då ingen annan vill fungera   :l

Permalänk: https://www.webforum.nu/p/2060739

## #13 — Zaiman, 2007-12-12T20:49Z

Lite småfrågor OT
Är det inte dumt att använda ordet Delete som namn på en procedur? Även om du kapslar in det kan du inte använda något annat? Är inte Delete ett reserverat ord?

Permalänk: https://www.webforum.nu/p/2060746

## #14 — CatZ, 2007-12-12T22:56Z

håller med Zaiman, ett bättre ord vore spDeleteDETDUTARBORT ;)

Permalänk: https://www.webforum.nu/p/2060770

## #15 — Vinnaren, 2007-12-13T11:09Z

ok, har bytt namn på proceduren, men det hjälpte inte   :r 

Känns omöjligt med SqlCommand  :l

Permalänk: https://www.webforum.nu/p/2060827

## #16 — Gladh, 2007-12-13T11:31Z

Märkligt följande får jag att fungera.

```
                SqlConnection connection = new SqlConnection(Connectionstring);
                //-- Create command to call SP
                IDbCommand command = new SqlCommand();
                command.CommandType = CommandType.StoredProcedure;
                command.CommandText = "dbo.GetCategories";
                command.Connection = connection;

                SqlParameter parameter = new SqlParameter("@LCID", SqlDbType.Int);
                parameter.Value = lcid;
                command.Parameters.Add(parameter);

                command.Connection.Open();
                int i = command.ExecuteNonQuery();
```

Får jag att fungera, nu kör jag mot SQL2005 men det skall väl knappast spela någon roll.

\- M

Permalänk: https://www.webforum.nu/p/2060836

## #17 — Vinnaren, 2007-12-13T15:22Z

tack, men det vill sig inte, skiter i den nu, den andra fungerar ju   :bire 

har en annan fråga om frågor   §e 

```
                conn.Open();
                SqlCommand cmd = new SqlCommand("dbo.getBloggPropertiesByBloggId", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@id", bp.BloggID);

                using (SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow))
                {
                    if (reader.Read())
                    {
                        return new BloggProperties(reader.GetString(0), reader.GetString(1), reader.GetString(2), reader.GetInt32(3), reader.GetString(4), reader.GetString(5), reader.GetString(6), reader.GetInt32(7));
                    }
                    else
                    {
                        throw new ApplicationException("Bloggen finns inte");
                    }
                }
```

 

Den kraschar när den ska returnera då 6 & 7 är null, dessa ska kunna vara null, men hur gör man om man returnerar det? som det är nu funkar det inte.

Tacksam för all hjälp    :stud

Permalänk: https://www.webforum.nu/p/2060891

## #18 — CatZ, 2007-12-13T16:19Z

det beror på vad det är för värden...

du kan inte göra reader.GetInt32 på ett null värder då måste kontrollera om det är null och sedan konvertera till 0.

```
if (reader["KolumnNamn6"] == DbNull.Value)
{
	value = 0
}
else
{
	value = reader.GetInt32(6)
}
```

Permalänk: https://www.webforum.nu/p/2060909

## #19 — Vinnaren, 2007-12-13T16:34Z

ok,tack, gjorde om sql frågan så den returnerar 0 isf null på int, men det hjälpte inte, får felmeddelandet:
System.Data.SqlTypes.SqlNullValueException: Data is Null. This method or property cannot be called on Null values.

Är det funktionen som tar emot resultatet som e fel?
dvs.

```
    public BloggProperties(String bloggtype, String bloggname, String bloggowner, int bloggid, String themename, String thememap, String toppicture, int height)
    {
        BloggType   = bloggtype;
        BloggID = bloggid;
        BloggName = bloggname;
        BloggOwner = bloggowner;
        ThemeName = themename;
        ThemeMap = thememap;
        Height = height;
    }
```

Permalänk: https://www.webforum.nu/p/2060913

## #20 — doggelito, 2007-12-13T16:34Z

> **Vinnaren skrev:**
>
> men hur gör man om man returnerar det?

Om databasen får returnera null så borde metoden BloggProperties tillåta det.

```
public BloggProperties(int? propertynamn, ...)
...
```

Permalänk: https://www.webforum.nu/p/2060914

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/167206-problem-att-exekvera  
Nästa sida: https://www.webforum.nu/amne/dotnet/167206-problem-att-exekvera/page2.md
