---
title: "SP i C#"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/76372-sp-i-c"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "saw"
published: "2003-05-08T18:44:36.000Z"
updated: "2003-05-11T13:05:07.000Z"
replies: 14
views: 424
page: 1
pages: 1
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/76372-sp-i-c"
---

# SP i C#

## #1 — saw, 2003-05-08T18:44Z

Detta är kanske ett gränsfall, i vilket forum jag skall skriva men...

Hur drar jag igång en SP i C#?
I vanliga fall så gör jag ju så här:

da1 = new OleDbDataAdapter(SQLstring, con);
Men i C#?

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

## #2 — LarsG, 2003-05-08T18:46Z

Flyttas från SQL

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

## #3 — P, 2003-05-08T20:26Z

kolla <https://www.asp.net>

```
    Sub Page_Load(Sender As Object, E As EventArgs) 

        Dim DS As DataSet
        Dim MyConnection As SqlConnection
        Dim MyCommand As SqlDataAdapter

        MyConnection = New SqlConnection("server=(local)\NetSDK;database=northwind;Trusted_Connection=yes")
        MyCommand = New SqlDataAdapter("Ten Most Expensive Products", MyConnection)

        MyCommand.SelectCommand.CommandType = CommandType.StoredProcedure

        DS = new DataSet()
        MyCommand.Fill(DS, "Products")

        MyDataGrid.DataSource=DS.Tables("Products").DefaultView
        MyDataGrid.DataBind()
    End Sub
```

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

## #4 — Dino, 2003-05-08T20:28Z

Eller i c#

```
OleDbCommand salesCMD = new OleDbCommand("SalesByCategory", nwindConn);
salesCMD.CommandType = CommandType.StoredProcedure;
```

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

## #5 — saw, 2003-05-08T20:47Z

Nu blev jag lite mer förvirrad än vanligt.
I vanliga fall så tar jag ju hand om det på detta viset:

```
da1 = new OleDbDataAdapter(SQLstring, con);		
ds1 = new DataSet("frånAlbum");			
try
			
{				
con.Close(); 				
con.Open();				
da1.Fill(ds1,"frånAlbum");				
con.Close();
	
listBoxFyllTitlar.Items.Add
(ds1.Tables["frånTitel"].Rows[a]["Songtitel"].ToString());
nr[a] = ds1.Tables["frånTitel"].Rows[a]["Songtitel"].ToString();
```

Men hur fångar jag då upp vad jag får fram?

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

## #6 — Dino, 2003-05-08T21:02Z

Borde räcka med nedan kod när du använder DataAdapter.

```
da1 = new OleDbDataAdapter(SQLstring, con);	
dataset ds1;		
try			
{				
da1.fill(ds1, "dsName");
}
	
listBoxFyllTitlar.Items.Add
(ds1.Tables["frånTitel"].Rows[a]["Songtitel"].ToString());
nr[a] = ds1.Tables["frånTitel"].Rows[a]["Songtitel"].ToString();
```

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

## #7 — saw, 2003-05-08T22:00Z

Men det är ju så jag gör nu, frågan var ju hur jag kör en SP i C#?

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

## #8 — Gladh, 2003-05-09T06:43Z

```
SqlConnection oConnection = new oConnection(DIN_CONNECTION_STRING);
SqlCommand oCommand = new SqlCommand(oConnection);

oCommand.CommandType = CommandType.StoreProcedure;
oCommand.CommandText = "NAMNET_PÅ_MIN_SP";

oConnection.Open();
SqlDataReader oDataReader = oCommand.ExecuteReader();
//-- gör lite kul grejer med DataReadern
oConnection.Close();
```

Skrivet ur huvudet så det går nog inte att klipp och klistera med tanke på stora och små bokstäver...

\[redigerat\]
Såg att du kör OleDBConnection, om du kör mot en SQL Server så använda dig av SqlConnection, om du kör mot Access/MySQL så kan du inte använda dig av SP då dessa inte är implementerade där. Om du använder en annan databas  typ Oracle, så fortsätt att använda OleDbConnection och byt ut mina SQL mot OleDb i koden ovan.
\[/redigerat\]

\- M

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

## #9 — saw, 2003-05-09T07:45Z

Måste då komma med två frågor till, används DataReadern som DataSet?
I stället för 
using System.Data;
using System.Data.OleDb;
vad skall jag då använda??

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

## #10 — Gladh, 2003-05-09T10:57Z

1\. Både ja och nej! Datareader är snabbare än ett dataset, men håller en koppling till databasen öppen så länge du inte har stängt det eller stängt kopplingen. Det betyder att det inte är bra att skicka dataReaders mellan olika lager eller mellan olika metoder.

2\. Beror på vilken databas du använder. Om du använder SQL Server 7/2000 så SKALL du använda System.Data.SqlClient och System.Data.SqlType. Detta eftersom du får en ordentligt prestanda ökning om du gör det. Du kan använda dig av OleDb mot dessa databaser också men är otroligt korkat.

Här kan du läse mer om DataAccess i .NET, några bra små exempel: <http://samples.gotdotnet.com/quickstart/aspplus/doc/webdataaccess.aspx>

\- M

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

## #11 — saw, 2003-05-09T13:02Z

Jo det borde ju vara enkelt, men jag lyckas ändå med att fela...

```
using System.Data;
using System.Data.SqlClient;
	
//
			
// TODO: Add any constructor code after InitializeComponent call
			
//
		
SqlConnection minCon = new SqlConnection("server=(local)
\\NetSDK;database=Melodi;Trusted_Connection=yes");
\\*******
private SqlConnection minCon;
private string[] nr;
private DataSet ds1;

private void LaddaListbox()
		
{			
string SQLstring ="SELECT Songtitel,hide FROM t_Songtitlar ORDER BY Songtitel";			
SqlDataAdapter myCommand = new SqlDataAdapter(SQLstring, minCon);			
//DataSet ds1 = new DataSet();			
try			
{				
myCommand.Fill(ds1, "frånTitel");			
minCon.Close();			
}			
catch(Exception fel)			
{				
MessageBox.Show(fel.Message,"Databasfel");		
}			
int rader = ds1.Tables["frånTitel"].Rows.Count;		
nr = new String[rader];			
for(int a = 0;a < rader; a++)			
{				
listBox1.Items.Add					
(ds1.Tables["frånTitel"].Rows[a]["Songtitel"].ToString());	
nr[a] = ds1.Tables["frånTitel"].Rows[a]["Songtitel"].ToString();
}		
}
```

Så här har jag fattat att det skulle vara för att ladda en enkel listbox med SQL servern.

ERROR:

Value can not be null, ParametarName dataSet

Jag förstår inte detta...

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

## #12 — Grynet, 2003-05-09T13:11Z

private DataSet ds1 = new DataSet();

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

## #13 — Gladh, 2003-05-09T13:56Z

I din kod använder du ju inga SP's du använder vanlig SQL sats som du skickar in.

Jag skulle dock inte har gjort så om jag bara skulle fyllt en list box, jag hade använt mig av en datareader och sedan bundit den mot listboxen.

```
			SqlConnection oConnection = new SqlConnection("SQL_STRING");
			SqlCommand oCommand = new SqlCommand();
			oCommand.CommandText = "SELECT *.....";
			oCommand.Connection = oConnection;

			oConnection.Open();
			SqlDataReader oDataReader = oCommand.ExecuteReader();

			ListBox1.DataTextField = oDataReader["FÄLTET_SOM_SKALL_VISAS_I_LISTBOXEN"].ToString();
			ListBox1.DataValueField = oDataReader["FÄLTET_SOM_SKALL_VAR_VALUE_I_LISTBOXEN"].ToString();
			ListBox1.DataSource = oDataReader;
			ListBox1.DataBind();

			oDataReader.Close();
			oConnection.Close();
```

Det är heller inte testat, men ger dig iallafall en hum om hur man kan göra...

\- M

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

## #14 — saw, 2003-05-09T14:00Z

Snart kanske.....
Error:
Fill: SelectCommand.Connection property has not been initialized

Även här så är jag frågande vad som menas...

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

## #15 — Gladh, 2003-05-11T13:05Z

okej.. nu är det slut lekt :)

Denna kod är testad och validerad så den fungerar :)

```
			SqlConnection oConnection = new SqlConnection("Data Source=.;Initial Catalog=_OnlineShop;Integrated Security=SSPI;");
			SqlCommand oCommand = new SqlCommand();
			
			oCommand.Connection = oConnection;
			oCommand.CommandType = CommandType.Text;
			oCommand.CommandText = "SELECT * FROM tblCustomer";
			
			oConnection.Open();
			SqlDataReader oReader = oCommand.ExecuteReader();
			
			ListBox1.DataValueField = "Id";
			ListBox1.DataTextField = "firstName";
			ListBox1.DataSource = oReader;
			ListBox1.DataBind();
			
			oReader.Close();
			oConnection.Close();
```

Så nu behöver du bara byta ut conenctionStringen, commandTexten, och de 2 fältens namn som är kopplade till Listbox1.

\- M

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/76372-sp-i-c
