3

SqlDataSource を使用して GridView を作成しています。それを行う私のコードは次のとおりです。

private void DataCall()
{
    //Object gets created for use from the class(clsDataConduit)
    clsDataDictionary AnOrder = new clsDataDictionary();
    //Declaring a new SqlDataSource from the inbuilt class library
    SqlDataSource sqlDS_ItemTable = new SqlDataSource();
    //Using our datasource object being cast onto our objects connectionstring
    sqlDS_ItemTable.ConnectionString = AnOrder.ConnectionString;
    //Our sql statement being passed through to our .SelectCommand method
    sqlDS_ItemTable.SelectCommand = "Select tblOrders.OrderId, tblItem.ItemName, tblOrders.DateOrdered from tblItem, tblOrders where tblItem.ItemId = tblOrders.ItemId AND tblOrders.AuthId = 5";
    //Adding controls to our SqlDataSource object
    this.Controls.Add(sqlDS_ItemTable);
    //Declares the DataSource for our gridview !
    grdOrder.DataSource = sqlDS_ItemTable;
    //Binds the data to refresh every time it's used
    grdOrder.DataBind();
}

最後の SQL ステートメントでわかるように、私はこれを行っていますtblOrders.AuthId = 5。しかし、私はこのようなことをしたいtblOrders.AuthId = SessionAuthId .

行だけで何かをすることについての投稿をいくつか読みましたcommand.Parameters.Add(new SqlParameter("Name", dogName));が、これを自分のコードにどのように適用するかわかりません。

他人のコード(教授)を使って課題でやっているのですが、ログインシステムなどを開発するので少し編集したいです。

誰かがそのメソッドを見て、パラメーターを渡すように変更する方法を確認できますか。また、ここに完全なコード ビハインドがあります: http://pastebin.com/sdrvW5Zn

4

5 に答える 5

11

SelectParametersプロパティを使用して、パラメーター化されたクエリを実行できます。

sqlDS_ItemTable.SelectCommand = "Select tblOrders.OrderId, tblItem.ItemName, tblOrders.DateOrdered from tblItem, tblOrders where tblItem.ItemId = tblOrders.ItemId AND tblOrders.AuthId = @authID";

sqlDS_ItemTable.SelectParameters.Add(new SqlParameter("@authID", SessionAuthID));
于 2013-03-20T01:45:39.783 に答える
0

TheGreatCO によって提案された string.format メソッドは、SQL クエリを文字列として渡す現在の実装でうまく機能するようです。

それ以外の場合は、SQL スニペットからストアド プロシージャを作成し、パラメータを取るように設定できます。

sessionAuthId は int であると想定しています。

CREATE PROCEDURE SP_SAMPLEPROCEDURENAME

(
    @p1 int      -- here the input parameter is declared
)


AS
    BEGIN

Select 
tblOrders.OrderId, 
tblItem.ItemName, 
tblOrders.DateOrdered 
from tblItem, tblOrders 
where tblItem.ItemId = tblOrders.ItemId 
AND tblOrders.AuthId = @p1   -- here the input parameter is used

END

C# からストアド プロシージャを呼び出すには、次のようなメソッドが必要です。

public YOURReturnObject PopulateGridView(int sessionid)
{

SqlConnection conn = new SqlConnection("YourDBConnectionString);
SqlCommand comm = new SqlCommand("SP_SAMPLEPROCEDURENAME", conn);
comm.CommandType = CommandType.StoredProcedure;
comm.Parameters.AddWithValue("@p1",sessionid);

YOURReturnObject o = new YOURReturnObject();

using (comm.Connection)
{
comm.Connection.Open();
while (reader.Read())
{
//read the results into return object 

}


oを返します。

}
于 2013-03-20T02:30:05.593 に答える
0
 String authId = SessionAuthID;//pass your session ID to the variable or directly you can     pass this value as the parameter value:

 string strSQL = "Select tblOrders.OrderId, tblItem.ItemName, tblOrders.DateOrdered from   tblItem, tblOrders where tblItem.ItemId = tblOrders.ItemId AND tblOrders.AuthId = @ID";
 SqlCommand cmdItem = new SqlCommand(strSQL, clsMain_Connection.openConn());
 cmdItem.Parameters.AddWithValue("@ID", authId);
于 2013-03-20T02:17:06.330 に答える
-5

http://msdn.microsoft.com/en-us/library/system.string.format.aspxを使用string.Format()

次のようにします。

sqlDS_ItemTable.SelectCommand = string.Format("Select tblOrders.OrderId, tblItem.ItemName, tblOrders.DateOrdered from tblItem, tblOrders where tblItem.ItemId = tblOrders.ItemId AND tblOrders.AuthId = {0}", SessionAuthId);

2 番目の質問に答えるには、メソッドのシグネチャを変更してパラメーターを含めます。

private void DataCall(string SessionAuthId)
{
    // your method here...
}
于 2013-03-20T01:40:50.023 に答える