どのようにADO.NETとVisual C〓NETを使ってパラメータの記憶過程を呼び出しますか?
13136 ワード
ADO.NETを使用して記憶プロセスを起動し、リターン値とリターンパラメータを取得するための様々な方法がある.は、DataSetオブジェクトを使用して、戻り値およびリターンパラメータを取得する以外に、帰りのデータラインを収集して使用することもできる. は、Data Readerオブジェクトを使用して、これらの行を巡回し、リターン値とリターンパラメータを収集する. は、結果の最初の行の値と戻り値とを、ExecuteScarr方法を使用して返します.これは重合関数に特に有用である. ExecuteNonQuery方法を使用してパラメータと値だけを返します.戻る行はすべて破棄されます.これは操作クエリの実行に特に有用である. 本論文では、次の3つの方法を示し、使用します.
Sql Commandと
OleDbCommandという二つのオブジェクトです.あなたが使用しているホストが提供するプログラムに対応するコードのみをコピーすることを確認します.どのホストがプログラムを提供するべきかが不明な場合は、以下のマイクロソフトDeveloper Networkサイトにアクセスしてください.
NETデータ提供プログラム
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguded/html/cpconadonetproviders.asp
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguded/html/cpconadonetproviders.asp)
本明細書の各例において、これらのパラメータは追加される.
Commandオブジェクトの
Parameeters集合中です.使用
Sql Commandオブジェクトの場合、パラメータを任意の特定の順序で追加する必要はありませんが、パラメータ名が正しいことを保証してください.使用
OleDbCommandオブジェクトの場合は、正しい順にパラメータを追加する必要がありますが、名称に従ってパラメータを使用することはできません.
トップに戻る
Data Readerを使って行とパラメータを返します.
//
loadtoCNode(2、'summary')
//使えます
DataReaderオブジェクトはリードオンリーの前だけのデータストリームを返します.
DataReaderに含まれる情報は、1つの記憶プロセスから来ることができる.この例では
DataReaderオブジェクトは、入力および出力パラメータを伴う格納プロセスを実行し、その後、記録を巡回して戻りパラメータを確認します.は、Microsoft SQL Serverを実行するサーバ上で次のような格納プロセスを作成する. 新しいVisual C〓NET Windowsアプリケーションプロジェクトを作成します. は、SystemとSystem.Dataの名前空間に対してusing文を使用しており、後のコードにはこれらの名前空間における声明を限定する必要がない.このコードをフォームコードモジュールの上部に追加します.あなたが選択した提供プログラムに対応するコードのみをコピーすることを確認してください.SQLクライアント 次のコードでprvate Form_を置換します.ロードイベント中のコード:SQLクライアント は、SQL Serverを実行するコンピュータを指すように、Connectionオブジェクトの接続文字列を修正する. は上記のコードを実行します.なお、DataReaderは記録を検索してパラメータ値を返します.Data Readerオブジェクトのリード方法は、ループバックされた記録を使用することができます.「出力」画面は、2冊の本のタイトル、戻り値5と出力パラメータを表示します.記録の数(2)が含まれています.コードのDataReaderをオフにしないとパラメータ値が見えません.また、Data Readerがオフにされている場合、リターンパラメータを見るために全ての記録を遍歴する必要はないことに注意してください. トップに戻る
Commandオブジェクトを使うExecuteScarr方法
//
loadtoCNode(2、'summary')
//使える
Commandオブジェクトの
ExecuteScarrメソッドでパラメータ値を検索します.また、
ExecuteScarrは、記憶プロセスの第1行の第1列を返す.これは,次の例において,重合関数に特に有用である.は、SQL Serverを実行するサーバ上で次のような格納プロセスを作成する. 新しいVisual C〓NET Windowsアプリケーションプロジェクトを作成します. は、SystemとSystem.Dataの名前空間に対してusing文を使用しており、後のコードにはこれらの名前空間における声明を限定する必要がない.このコードをフォームコードモジュールの上部に追加します.あなたが選択した提供プログラムに対応するコードのみをコピーすることを確認してください.SQLクライアント 次のコードをForm_に追加します.ロードイベント:SQLクライアント は、SQL Serverを実行するコンピュータを指すように、Connectionオブジェクトの接続文字列を修正する. は上記のコードを実行します.CommandオブジェクトのExecuteScarr方法はパラメータを返します.また、ExecuteScarrは、戻ってくる行のセットの最初の行の列の値を返します.したがって、intCountの値は、プロセスを格納するcount関数の結果である. トップに戻る
Commandオブジェクトを使うExecute NonQuery方法
//
loadtoCNode(2、'summary')
//この例で使用します
クエリーを実行してパラメータ値を返します.
Execute NonQueryはまた、このクエリを実行した後に影響を受けるレコード数を返します.しかし、
Execute NonQueryは、格納プロセスから任意の行または列に戻りません.
変更された行数を知るだけであれば、INSERT、UPATEまたはDELETE文を使用する場合、
Execute NonQuery方法は特に有用です.保存中にSELECT文だけを使うと、照会は任意の行に影響しないので、-1を受け取ります.は、SQL Serverを実行するコンピュータ上で次の格納プロセスを作成する. 新しいVisual C〓NET Windowsアプリケーションプロジェクトを作成します. は、SystemとSystem.Dataの名前空間に対してusing文を使用しており、後のコードにはこれらの名前空間における声明を限定する必要がない.このコードをフォームコードモジュールの上部に追加します.あなたが選択した提供プログラムに対応するコードのみをコピーすることを確認してください.SQLクライアント 以下のコードでForm 1コードモジュールのprvate Form 1_を置換します.ロードイベントの後のコード:SQLクライアント は、SQL Serverを実行するコンピュータを指すように、Connectionオブジェクトの接続文字列を修正する. は上記のコードを実行します.「出力」画面は、影響を受ける行数とリターンパラメータの値を表示します. トップに戻る
参照
他の情報については、次のMSDNサイトにアクセスしてください.http://msdn.microsoft.com/library/defa...
//
loadtoCNode(1、'references')
//
他の情報については、以下のMSDNサイトにアクセスしてください.
NET Fraamewark類庫概要
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgguide/html/cpconthenetfram ebork classigrary.asp
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgguide/html/cpconthenetfram ebork classigrary.asp)
Data Readerを使ってデータを検索する
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguded/html/cpcontheadonetdatareder.asp
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpcontheadonetdatareder.asp)
Sql Commandと
OleDbCommandという二つのオブジェクトです.あなたが使用しているホストが提供するプログラムに対応するコードのみをコピーすることを確認します.どのホストがプログラムを提供するべきかが不明な場合は、以下のマイクロソフトDeveloper Networkサイトにアクセスしてください.
NETデータ提供プログラム
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguded/html/cpconadonetproviders.asp
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguded/html/cpconadonetproviders.asp)
本明細書の各例において、これらのパラメータは追加される.
Commandオブジェクトの
Parameeters集合中です.使用
Sql Commandオブジェクトの場合、パラメータを任意の特定の順序で追加する必要はありませんが、パラメータ名が正しいことを保証してください.使用
OleDbCommandオブジェクトの場合は、正しい順にパラメータを追加する必要がありますが、名称に従ってパラメータを使用することはできません.
トップに戻る
Data Readerを使って行とパラメータを返します.
//
loadtoCNode(2、'summary')
//使えます
DataReaderオブジェクトはリードオンリーの前だけのデータストリームを返します.
DataReaderに含まれる情報は、1つの記憶プロセスから来ることができる.この例では
DataReaderオブジェクトは、入力および出力パラメータを伴う格納プロセスを実行し、その後、記録を巡回して戻りパラメータを確認します.
Create Procedure TestProcedure
(
@au_idIN varchar (11),
@numTitlesOUT Integer OUTPUT
)
AS
select A.au_fname, A.au_lname, T.title
from authors as A join titleauthor as TA on
A.au_id=TA.au_id
join titles as T
on T.title_id=TA.title_id
where A.au_id=@au_idIN
set @numTitlesOUT = @@Rowcount
return (5)
using System.Data.SqlClient;
OLPE DBデータ提供プログラム
using System.Data.OleDb;
SqlConnection PubsConn = new SqlConnection
("Data Source=server;integrated " +
"Security=sspi;initial catalog=pubs;");
SqlCommand testCMD = new SqlCommand
("TestProcedure", PubsConn);
testCMD.CommandType = CommandType.StoredProcedure;
SqlParameter RetVal = testCMD.Parameters.Add
("RetVal", SqlDbType.Int);
RetVal.Direction = ParameterDirection.ReturnValue;
SqlParameter IdIn = testCMD.Parameters.Add
("@au_idIN", SqlDbType.VarChar, 11);
IdIn.Direction = ParameterDirection.Input;
SqlParameter NumTitles = testCMD.Parameters.Add
("@numtitlesout", SqlDbType.VarChar, 11);
NumTitles.Direction = ParameterDirection.Output ;
IdIn.Value = "213-46-8915";
PubsConn.Open();
SqlDataReader myReader = testCMD.ExecuteReader();
Console.WriteLine ("Book Titles for this Author:");
while (myReader.Read())
{
Console.WriteLine ("{0}", myReader.GetString (2));
};
myReader.Close() ;
Console.WriteLine("Number of Rows: " + NumTitles.Value );
Console.WriteLine("Return Value: " + RetVal.Value);
OLPE DBデータ提供プログラム
OleDbConnection PubsConn = new OleDbConnection
("Provider=SQLOLEDB;Data Source=server;" +
"integrated Security=sspi;initial catalog=pubs;");
OleDbCommand testCMD = new OleDbCommand
("TestProcedure", PubsConn);
testCMD.CommandType = CommandType.StoredProcedure;
OleDbParameter RetVal = testCMD.Parameters.Add
("RetVal", OleDbType.Integer);RetVal.Direction = ParameterDirection.ReturnValue;
OleDbParameter IdIn = testCMD.Parameters.Add
("@au_idIN", OleDbType.VarChar, 11);
IdIn.Direction = ParameterDirection.Input;
OleDbParameter NumTitles = testCMD.Parameters.Add
("@numtitlesout", OleDbType.VarChar, 11);
NumTitles.Direction = ParameterDirection.Output;
IdIn.Value = "213-46-8915";
PubsConn.Open();
OleDbDataReader myReader = testCMD.ExecuteReader();
Console.WriteLine ("Book Titles for this Author:");
while (myReader.Read())
{
Console.WriteLine ("{0}", myReader.GetString (2));
};
myReader.Close() ;
Console.WriteLine("Number of Rows: " + NumTitles.Value );
Console.WriteLine("Return Value: " + RetVal.Value);
Commandオブジェクトを使うExecuteScarr方法
//
loadtoCNode(2、'summary')
//使える
Commandオブジェクトの
ExecuteScarrメソッドでパラメータ値を検索します.また、
ExecuteScarrは、記憶プロセスの第1行の第1列を返す.これは,次の例において,重合関数に特に有用である.
Create Procedure TestProcedure2
(
@au_idIN varchar (11)
)
As
/* set nocount on */
select count (T.title)
from authors as A join titleauthor as TA on
A.au_id=TA.au_id
join titles as T
on T.title_id=TA.title_id
where A.au_id=@au_idIN
Return(5)
using System.Data.SqlClient;
OLPE DBデータ提供プログラム
using System.Data.OleDb;
string strCount;
SqlConnection PubsConn = new SqlConnection
("Data Source=server;integrated " +
"Security=sspi;initial catalog=pubs;");
SqlCommand testCMD = new SqlCommand
("TestProcedure2", PubsConn);
testCMD.CommandType = CommandType.StoredProcedure;
SqlParameter RetVal = testCMD.Parameters.Add
("RetVal", SqlDbType.Int);
RetVal.Direction = ParameterDirection.ReturnValue;
SqlParameter IdIn = testCMD.Parameters.Add
("@au_idIN", SqlDbType.VarChar, 11);
IdIn.Direction = ParameterDirection.Input;
IdIn.Value = "213-46-8915";
PubsConn.Open();
strCount =testCMD.ExecuteScalar ().ToString() ;
Console.WriteLine("Number of Rows: " + strCount );
Console.WriteLine("Return Value: " + RetVal.Value);
OLPE DBデータ提供プログラム
string strCount;
OleDbConnection PubsConn = new OleDbConnection
("Provider=SQLOLEDB;Data Source=server;" +
"integrated Security=sspi;initial catalog=pubs;");
OleDbCommand testCMD = new OleDbCommand
("TestProcedure2", PubsConn);
testCMD.CommandType = CommandType.StoredProcedure;
OleDbParameter RetVal = testCMD.Parameters.Add
("RetVal", OleDbType.Integer);
RetVal.Direction = ParameterDirection.ReturnValue;
OleDbParameter IdIn = testCMD.Parameters.Add
("@au_idIN", OleDbType.VarChar, 11);
IdIn.Direction = ParameterDirection.Input;
IdIn.Value = "213-46-8915";
PubsConn.Open();
strCount = testCMD.ExecuteScalar().ToString() ;
Console.WriteLine("Number of Rows: " + strCount);
Console.WriteLine("Return Value: " + RetVal.Value);
Commandオブジェクトを使うExecute NonQuery方法
//
loadtoCNode(2、'summary')
//この例で使用します
クエリーを実行してパラメータ値を返します.
Execute NonQueryはまた、このクエリを実行した後に影響を受けるレコード数を返します.しかし、
Execute NonQueryは、格納プロセスから任意の行または列に戻りません.
変更された行数を知るだけであれば、INSERT、UPATEまたはDELETE文を使用する場合、
Execute NonQuery方法は特に有用です.保存中にSELECT文だけを使うと、照会は任意の行に影響しないので、-1を受け取ります.
Create Procedure TestProcedure3
(
@au_idIN varchar (11),
@au_fnam varchar (30)
)
As
/* set nocount on */
Update authors set au_fname = @au_fnam
where au_id = @au_idin
return (5)
using System.Data.SqlClient;
OLPE DBデータ提供プログラム
using System.Data.OleDb;
string strRowAffect;
SqlConnection PubsConn = new SqlConnection
("Data Source=server;integrated Security=sspi;" +
"initial catalog=pubs;");
SqlCommand testCMD = new SqlCommand
("TestProcedure3", PubsConn);
testCMD.CommandType = CommandType.StoredProcedure;
SqlParameter RetVal = testCMD.Parameters.Add
("RetVal", SqlDbType.Int);
RetVal.Direction = ParameterDirection.ReturnValue;
SqlParameter IdIn = testCMD.Parameters.Add
("@au_idIN", SqlDbType.VarChar, 11);
IdIn.Direction = ParameterDirection.Input;
SqlParameter FnameIn = testCMD.Parameters.Add
("@au_fnam", SqlDbType.VarChar, 30);
FnameIn.Direction = ParameterDirection.Input;
IdIn.Value = "213-46-8915";
FnameIn.Value = "Marjorie";
PubsConn.Open();
strRowAffect =testCMD.ExecuteNonQuery ().ToString() ;
Console.WriteLine("Number of Rows: " + strRowAffect );
Console.WriteLine("Return Value: " + RetVal.Value);
OLPE DBデータ提供プログラム
int intRowAffected;
OleDbConnection PubsConn = new OleDbConnection
("Provider=SQLOLEDB;Data Source=server;" +
"integrated Security=sspi;initial catalog=pubs;");
OleDbCommand testCMD = new OleDbCommand
("TestProcedure3", PubsConn);
testCMD.CommandType = CommandType.StoredProcedure;
OleDbParameter RetVal = testCMD.Parameters.Add
("RetVal", OleDbType.Integer);
RetVal.Direction = ParameterDirection.ReturnValue;
OleDbParameter IdIn = testCMD.Parameters.Add
("@au_idIN", OleDbType.VarChar, 11);
IdIn.Direction = ParameterDirection.Input;
OleDbParameter FnameIn = testCMD.Parameters.Add
("@au_fname", OleDbType.VarChar, 30);
FnameIn.Direction = ParameterDirection.Input;
IdIn.Value = "213-46-8915";
FnameIn.Value = "Marjorie";
PubsConn.Open();
intRowAffected = testCMD.ExecuteNonQuery();
Console.WriteLine("Number of Rows affected: " + intRowAffected);
Console.WriteLine(RetVal.Value);
参照
他の情報については、次のMSDNサイトにアクセスしてください.http://msdn.microsoft.com/library/defa...
//
loadtoCNode(1、'references')
//
他の情報については、以下のMSDNサイトにアクセスしてください.
NET Fraamewark類庫概要
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgguide/html/cpconthenetfram ebork classigrary.asp
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgguide/html/cpconthenetfram ebork classigrary.asp)
Data Readerを使ってデータを検索する
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguded/html/cpcontheadonetdatareder.asp
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpcontheadonetdatareder.asp)