Как запустить sp из кода C #? - PullRequest
       13

Как запустить sp из кода C #?

0 голосов
/ 05 февраля 2009

Я новичок в ADO.net. Я фактически создал образец базы данных и пример хранимой процедуры. Я очень новичок в этой концепции. Я не уверен, как установить соединение с базой данных из приложения C # windows. Пожалуйста, направьте меня с помощью или образцом, чтобы сделать то же самое.

Ответы [ 6 ]

3 голосов
/ 05 февраля 2009

Примерно так ... (при условии, что вы передадите объект Person)

public int Insert(Person person)
{
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
SqlCommand dCmd = new SqlCommand("InsertData", conn);
dCmd.CommandType = CommandType.StoredProcedure;
try
{
dCmd.Parameters.AddWithValue("@firstName", person.FirstName);
dCmd.Parameters.AddWithValue("@lastName", person.LastName);
dCmd.Parameters.AddWithValue("@age", person.Age);
return dCmd.ExecuteNonQuery();
}
catch
{
throw;
}
finally
{
dCmd.Dispose();
conn.Close();
conn.Dispose();
}
}
3 голосов
/ 05 февраля 2009
1 голос
/ 05 февраля 2009

Это обычный шаблон (он может немного отличаться для разных баз данных, Sql Server не требует указывать параметры в тексте команды, но Oracle делает, а в Oracle параметры имеют префикс: не с @ )

using(var command = yourConnection.CreateCommand())
{
   command.CommandText = "YOUR_SP_CALL(@PAR1, @PAR2)";
   command.CommandType = CommandType.StoredProcedure;
   command.Parameters.Add(new OdbcParameter("@PAR1", "lol"));
   command.Parameters.Add(new OdbcParameter("@PAR2", 1337));
   command.ExecuteNonQuery();
}
0 голосов
/ 05 февраля 2009

При использовании SQL Server:

SqlConnection connection = new SqlCOnnection("Data Source=yourserver;Initial Catalog=yourdb;user id=youruser;passowrd=yourpassword");
SqlCommand cmd = new SqlCommand("StoredProcName", connection);
cmd.CommandType=StoredProcedureType.Command;
connection.Open();
cmd.ExecuteNonQuery();
connection.Close();

Если нет, замените Sql на Ole и измените строку подключения.

0 голосов
/ 05 февраля 2009

Вот хорошая отправная точка http://support.microsoft.com/kb/310130

OdbcConnection cn;
OdbcCommand cmd;
OdbcParameter prm;
OdbcDataReader dr;

try {
    //Change the connection string to use your SQL Server.
    cn = new OdbcConnection("Driver={SQL Server};Server=servername;Database=Northwind;Trusted_Connection=Yes");

    //Use ODBC call syntax.
    cmd = new OdbcCommand("{call CustOrderHist (?)}", cn);

    prm = cmd.Parameters.Add("@CustomerID", OdbcType.Char, 5);
    prm.Value = "ALFKI";

    cn.Open();

    dr = cmd.ExecuteReader();

    //List each product.
    while (dr.Read()) 
    Console.WriteLine(dr.GetString(0));

    //Clean up.
    dr.Close();
    cn.Close();
}
catch (OdbcException o) {
    MessageBox.Show(o.Message.ToString());
}
0 голосов
/ 05 февраля 2009

Примерно так:

var connectionString = ConfigurationManager.ConnectionStrings["YourConnectionString"].ConnectionString;

        var conn = new SqlConnection(connectionString);

        var comm = new SqlCommand("YourStoredProc", conn) { CommandType = CommandType.StoredProcedure };

        try
        {
            conn.Open();


            // Create variables to match up with session variables
            var CloseSchoolID = Session["sessCloseSchoolID"];


            //  SqlParameter for each parameter in the stored procedure YourStoredProc
            var prmClosedDate = new SqlParameter("@prmClosedDate", closedDate);
            var prmSchoolID = new SqlParameter("@prmSchoolID", CloseSchoolID);

            // Pass the param values to YourStoredProc
            comm.Parameters.Add(prmClosedDate);
            comm.Parameters.Add(prmSchoolID);

            comm.ExecuteNonQuery();
        }

        catch (SqlException sqlex)
        {

        }

        finally
        {
            conn.Close();
        }
...