Chcę wykonać tę procedurę przechowywaną z programu w języku C #.
Napisałem następującą procedurę przechowywaną w oknie zapytania SqlServer i zapisałem ją jako przechowywaną1:
use master
go
create procedure dbo.test as
DECLARE @command as varchar(1000), @i int
SET @i = 0
WHILE @i < 5
BEGIN
Print 'I VALUE ' +CONVERT(varchar(20),@i)
EXEC(@command)
SET @i = @i + 1
END
EDYTOWANE:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace AutomationApp
{
class Program
{
public void RunStoredProc()
{
SqlConnection conn = null;
SqlDataReader rdr = null;
Console.WriteLine("\nTop 10 Most Expensive Products:\n");
try
{
conn = new SqlConnection("Server=(local);DataBase=master;Integrated Security=SSPI");
conn.Open();
SqlCommand cmd = new SqlCommand("dbo.test", conn);
cmd.CommandType = CommandType.StoredProcedure;
rdr = cmd.ExecuteReader();
/*while (rdr.Read())
{
Console.WriteLine(
"Product: {0,-25} Price: ${1,6:####.00}",
rdr["TenMostExpensiveProducts"],
rdr["UnitPrice"]);
}*/
}
finally
{
if (conn != null)
{
conn.Close();
}
if (rdr != null)
{
rdr.Close();
}
}
}
static void Main(string[] args)
{
Console.WriteLine("Hello World");
Program p= new Program();
p.RunStoredProc();
Console.Read();
}
}
}
Wyświetla to wyjątek Cannot find the stored procedure dbo.test
. Czy muszę podać ścieżkę? Jeśli tak, w jakim miejscu powinny być przechowywane procedury przechowywane?
c#
sql-server
stored-procedures
Uroczy
źródło
źródło
Odpowiedzi:
źródło
conn.Close
, sugerujeDispose
Open
iClose
połączenia. Jeśli powiesz, refaktoryzuj obiekt połączenia jako pole w przyszłości i usuń instrukcję using, możesz przypadkowo zapomnieć dodaćClose
i zakończyć połączenie otwarte.Parameters
kolekcjiSqlCommand
obiektu.Oto kilka interesujących linków, które możesz przeczytać:
źródło
public sealed class SqlCommand : System.Data.Common.DbCommand, ICloneable, IDisposable
. Umieszczenie go wusing
oświadczeniu pomoże oczyścić.Procedura wywoływania sklepu w C #
źródło
źródło
źródło
Jest to kod do wykonywania procedur przechowywanych zi bez parametrów poprzez odbicie. Należy pamiętać, że nazwy właściwości obiektów muszą być zgodne z parametrami procedury składowanej.
źródło
Korzystając z Ado.net
źródło
jest to przykład procedury składowanej, która zwraca wartość i jej wykonanie w c #
źródło
Korzystanie z Dappera. więc dodałem to, mam nadzieję, że ktoś pomoże.
źródło
Proszę sprawdzić Crane (jestem autorem)
https://www.nuget.org/packages/Crane/
Ma również wiele innych funkcji, które mogą ci się spodobać.
źródło
Masz na myśli, że twój kod to DDL? Jeśli tak, MSSQL nie ma różnicy. Powyższe przykłady dobrze pokazują, jak to wywołać. Po prostu upewnij się
źródło
Nie Wytworny odpowiedź tutaj. Więc dodałem jeden
źródło