1

它是一个 Windows 应用程序。最初我有一个表中下拉菜单的数据集。现在我想使用存储过程。如何修改代码中的流程?

我认为最好的方法可能是删除数据集并重新创建一个新数据集。但是我们可以在设计器代码中做吗?

谢谢。

编辑

  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

使用存储过程只会为您提供另一个表。如果您使用的是数据集设计器,只需创建一个新的 tableadapter 并使用存储过程作为 select 语句。

如果这不是您所要求的,请使用一些代码更新您的问题。

于 2012-07-03T14:11:01.193 回答
0

那么代码很简单。暗示您的 SQLCommand 称为 myCommand

  • 将 更改为myCommand.Text存储过程的名称。

  • 将 更改myCommand.CommandTypeCommandType.StoredProcedure

对于存储过程中的每个参数,请使用以下行:

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

我喜欢使用DataReaders这种类型的操作。

  • SQLDataReader myReader = myCommand.ExecuteReader();

瞧!你的 StoredProcedure 被执行。

现在假设您要将 soretd 过程的结果添加到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 回答