2

私はC#の世界に慣れていないので、気楽にやってください! :]

正しい用語を使用しているかどうかさえわかりません。これは簡単なGoogle検索になると思いましたが、これを正しく表現していない可能性があります.

データベースからデータを収集しています。そのようです:

        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.  
        }

私の質問は次のとおりです。郵便番号の値を別の関数に文字列化するにはどうすればよいですか? 私は次のようなことを試してきました

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

しかし、次のように別の関数で使用できるように、その値を文字列にする方法を見つけようとして行き詰まりました。

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

正しい方向への助けやポイントは大歓迎です!

4

5 に答える 5

3

私が質問を誤解したか、あなたのアプローチが根本的に間違っています。まず、関数ではなくサブルーチンGetZipData()が返されます。voidさらに良いことに、サブと関数の両方をカバーするメソッドとして参照してください...

このようにパラメータを渡すことができます...

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

そして、このような関数からものを返すことができます...

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

あなたがやりたいことは、データ リーダーから 1 つの郵便番号または郵便番号のリストを取得することだと思います。何かのようなもの...

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

次に、このように単純に呼び出すことができます...

String TheZipCode = GetZipData(123);

もちろん、顧客を表すクラスを作成し、文字列の代わりにそれを返すなど、他にも検討できることがあります。そうすれば、1 回の 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 に答える