2

我是 C# 世界的新手,所以放轻松!:]

我什至不确定我使用的术语是否正确。我认为这将是一个简单的谷歌搜索,但恐怕我的措辞可能不正确。

我正在从数据库中收集数据。像这样:

        SqlConnection mySqlConnection = new SqlConnection(strings.settings.connectionString);
        SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
        mySqlCommand.CommandText = "SELECT FNAME, LNAME, ZIPCODE FROM database WHERE ID = @ID";

        mySqlCommand.Parameters.Add("@ID", SqlDbType.Char).Value = txtID.Text;
        mySqlConnection.Open();
        SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader(CommandBehavior.SingleRow);

        if (mySqlDataReader.HasRows == false)
        {
            throw new Exception();
        }

        if (mySqlDataReader.Read())
        {
            txtFname.Text = mySqlDataReader[0].ToString();
            txtLname.Text = mySqlDataReader[1].ToString();
            lblZipcode.Text = mySqlDataReader[2].ToString(); 
            //need help on stringing the value ZIPCODE above.  
        }

我的问题是:如何将 Zipcode 值串到另一个函数?我一直在尝试像

 string Zipcode = mySqlDataReader[2].ToString();

但我一直在试图弄清楚如何将该值串起来,以便可以在不同的函数中使用它,如下所示:

 private void GetZipData()
 {
   //Get that value
 }

任何帮助或正确方向的观点将不胜感激!

4

5 回答 5

3

要么我误解了这个问题,要么你的方法根本上是错误的。首先,你GetZipData()正在返回void,所以是一个子例程,而不是一个函数。更好的是,将其称为一种方法,因为它涵盖了 subs 和 funcs...

您可以像这样传递参数...

public void GetZipData(String SomeInputString) {
    ///Do something
}

你可以从这样的函数中返回东西......

public String GetZipData() {
    return "Some String";
}

我怀疑您想要做的是从数据阅读器获取单个邮政编码或邮政编码列表。就像是...

public String GetZipData(Integer Id) {
    //All your MySQL Code here
    return mySqlDataReader[2].ToString();
}

那么你可以简单地这样称呼它......

String TheZipCode = GetZipData(123);

当然,你也可以考虑做其他事情——比如创建一个类来代表客户并返回它而不是字符串——然后你可以在一次 Db 之旅中获得所有信息......

class Person {
    String Firstname;
    String Lastname;
    String ZipCode;
}

public Person GetPersonData(Integer Id) {
    //All your MySQL Code here
    Person ReturnData = new Person();

    ReturnData.Firstname = mySqlDataReader[0].ToString();
    ReturnData.Lastname = mySqlDataReader[1].ToString();
    ReturnData.ZipCode = mySqlDataReader[2].ToString();

    return ReturnData;
}

那你就有...

Person person = GetPersonData(12);
//You can now use person.Firstname, person.ZipCode, etc...
于 2012-11-08T17:00:27.620 回答
2

将此方法更改为

private string GetZipData()
 {
   string Zipcode = mySqlDataReader[2] as String;
   return Zipcode;
 }
于 2012-11-08T16:58:58.953 回答
0

我不确定您要达到的目标。如果要将 zip 字符串传递给另一个方法,可以向该方法添加一个字符串参数

private void DoSomethingWithZipCode(string zipCode)
{
    Console.WriteLine(zipCode);
}

如果要返回取决于邮政编码的另一个值,则还需要返回类型

private string GetCity(string zipCode)
{
    string city = <get city from database>;
    return city;
}

或者在你的情况下

private string GetZipData(SqlDataReader dataReader)
{
    return dataReader[2].ToString(); 
}

你会这样称呼它

lblZipcode.Text = GetZipData(mySqlDataReader);

您还可以编写扩展方法。您必须将此方法放在一个静态类中,该类的命名空间在您使用它的地方可用

public static string ZipData(this SqlDataReader dataReader)
{
    return dataReader[2].ToString(); 
}

你可以这样称呼它

lblZipcode.Text = mySqlDataReader.ZipData();
于 2012-11-08T17:10:04.800 回答
0
string Zipcode = mySqlDataReader[2].ToString();

private void GetZipData(string yourInput)
{
   //do your stuff with yourInput
}
于 2012-11-08T21:12:08.050 回答
-1

如果您的顶级数据访问代码在其自己的方法中,您可以从那里“返回”它,然后从新值调用您的数据访问方法,见下文:

return ZipCode

private void GetZipData() {
var stry=DataCode();
}

问候克雷格

于 2012-11-08T17:00:05.780 回答