1

ウィンドウズアプリケーションです。もともと、テーブルのドロップダウン メニュー用のデータセットがあります。次に、ストアド プロシージャを使用します。コード内のプロセスを変更するには?

おそらく最善の方法は、データセットを削除して新しいデータセットを再作成することだと思います。しかし、デザイナーのコードでできるでしょうか?

ありがとう。

編集

  protected Problem_DE_DataSet(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : 
            base(info, context, false) {
        if ((this.IsBinarySerialized(info, context) == true)) {
            this.InitVars(false);
            global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler1 = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged);
            this.Tables.CollectionChanged += schemaChangedHandler1;
            this.Relations.CollectionChanged += schemaChangedHandler1;
            return;
        }
        string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string))));
        if ((this.DetermineSchemaSerializationMode(info, context) == global::System.Data.SchemaSerializationMode.IncludeSchema)) {
            global::System.Data.DataSet ds = new global::System.Data.DataSet();
            ds.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema)));
            if ((ds.Tables["Problem_DE"] != null)) {
                base.Tables.Add(new Problem_DEDataTable(ds.Tables["Problem_DE"]));
            }
            this.DataSetName = ds.DataSetName;
            this.Prefix = ds.Prefix;
            this.Namespace = ds.Namespace;
            this.Locale = ds.Locale;
            this.CaseSensitive = ds.CaseSensitive;
            this.EnforceConstraints = ds.EnforceConstraints;
            this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add);
            this.InitVars();
        }
        else {
            this.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema)));
        }
        this.GetSerializationData(info, context);
        global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged);
        base.Tables.CollectionChanged += schemaChangedHandler;
        this.Relations.CollectionChanged += schemaChangedHandler;
    }
4

2 に答える 2

0

さて、コードは簡単です。SQLCommand が myCommand と呼ばれることを意味する

  • myCommand.Textをストアド プロシージャの名前に変更します。

  • を に変更myCommand.CommandTypeCommandType.StoredProcedureます。

ストアド プロシージャにある各パラメータについて、次の行を使用します。

  • myCommand.Parameters.AddWithCalue("@YourSQLParameter",YourValue)

DataReadersはこのタイプの操作に使用するのが好きです。

  • SQLDataReader myReader = myCommand.ExecuteReader();

出来上がり!StoredProcedure が実行されます。

ここで、sotred プロシージャの結果を に追加するとしますComboBox

  • while (myReader.Read()) { myComboBox.Items.Add(myReader["ColumnName"].Tostring(); }

基本的な例ですが、要点がわかると思います。さらに情報が必要な場合は、いつでもこのチュートリアルを読むことができ、必要なものがほとんど説明されています。

アップデート :

そこに投稿した生成コードが乱雑になりましたが、アプローチは同じです。私が理解していることから、ストアドプロシージャを使用してテーブルから読み取り、ComboBox または DropDownList に特定のフィールドを入力したいだけです。このデザイナーを使用して動作を理解することなく、コード セクションで最初から入力してみてください。

次のようなものが必要です。

        //Creates a connection to your DataBase
        SqlConnection myConnection = new SqlConnection(@"Server=YOURSERVER;Database=YOURDATABASE;User id=YOURID; Password=YOURPASSWORD");
        //Opens the connection
        myConnection.Open();
        //Creates a command (Query)
        SqlCommand myCommand = myConnection.CreateCommand();
        //Sets the type of query to Stored Procedure (EXEC ...)
        myCommand.CommandType = CommandType.StoredProcedure;
        //The Query is set to stored procedure so (EXEC THE_NAME_OF_YOU_STOREDPROCEDURE)
        myCommand.CommandText = "THE_NAME_OF_YOUR_STOREDPROCEDURE";

        //This will add each parameter to your query (EXEC THE_NAME_OF_YOURSTOREDPROCEDURE @YOURPARAMETER
        myCommand.Parameters.AddWithValue("@YOURPARAMETER", THE_VALUE_OF_THE_PARAMETER);
        SqlDataReader myReader = myCommand.ExecuteReader();

        //For each records returned the item from the ["YOURCOLUMN"] will be added to the comboBox
        while(myReader.Read())
        {
          myComboBox.Items.Add(myReader["YOUR_COLUMN_NAME"]);
        }
        myReader.Close();
        myConnection.Close();
于 2012-07-03T14:13:17.183 に答える
0

ストアド プロシージャを使用すると、別の別のテーブルが得られます。データセット デザイナーを使用している場合は、新しい tableadapter を作成し、ストアド プロシージャを select ステートメントとして使用するだけです。

これがあなたが求めているものでない場合は、コードで質問を更新してください。

于 2012-07-03T14:11:01.193 に答える