0

私はクラス Report とクラス Program を持っています。私が達成したいのは (これまでのところうまくいきません)、クラス Program とメソッド SaveRep() からクラス Report メソッド Save() にデータを送信し、このメソッドに保存することです。

質問がうまく定式化されていない場合はお詫び申し上げます。私は本当にこれに行き詰まっています。助けてください。ありがとう

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Configuration;
using System.Data.SqlClient;

namespace Application
{
 class Program
 {
    static void Main(string[] args)
    {            
        //call method SaveRep
    }

    public void SaveRep(...)
    {
       int RepID = 1;
       string Data1 = "SomeData1"
       string Data2 = "SomeData2"

       //This method should send the data above to method Save() in Report class
       //data to this method will be provided from another method.
    }        
  }

  public class Report
  {
    private static int _repID;
    public int RepID
    {
        get { return _repID; }
        set { _repID = value; }
    }

    private static string _data1;       
    public string Data1
    {
        get { return _data1; }
        set { _data1 = value; }
    }

    private static string __data2;
    public string Data1
    {
        get { return _data2; }
        set { _data2 = value; }
    }

    public void Save()
    {
        string strConnectionString = (@"server=(local)\sqlexpress;Integrated Security=True;database=DataBase");

        SqlConnection connection = new SqlConnection(strConnectionString);
        connection.Open();

        // This method should save  all data (RepID,Data1,Data2)
        // to the DB, provided to her by SaveRep method from Program class.
        // Properties are columns from a database
    }
  }
}
4

3 に答える 3

0

前のスピーカーが気づいていない小さなことの 1 つは、Reportクラスがひどく壊れていることです。なぜstatic変数にキーワードを使用したのですか? そんなことしたらダメ!まあ、あなたがそれが何をするかを知らない限り、そしてここで私はあなたが知らないと感じています. Report クラスを次のように更新します。

public class Report
{
    public int RepID {get;set;}
    public string Data1 {get;set;}
    public string Data2 {get;set;}

    public void Save()
    {
        // what others said
    }
}

元のコードの「静的」は、すべての te 変数をグローバル/共有にします。つまり、 を使用して 500 個のレポート オブジェクトを作成するとnew、それらはすべて同じ 1 つの ID、Data1 と Data2 を持つことになります。これら 500 個のオブジェクトのいずれかを変更すると、すべてのオブジェクトが変更されます。しかし、誤解を招くかもしれません。オブジェクトは変更されません。それらは単に同じデータを持つだけです。「ID」フィールドを見ると、別々のレコードに別々のデータを持つ別々のオブジェクトが必要だと思います..

于 2012-08-30T12:09:24.043 に答える
0
public void Save()
{
  string yourConnString="Replace with Your Database ConnectionString";
  using(SqlConnection connection = new SqlConnection(yourConnString))
  {    
     string sqlStatement = "INSERT Table1(Data1) VALUES(@Data1)";
     using(SqlCommand cmd = new SqlCommand(sqlStatement, connection))
     {
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.AddWithValue("@Data1",Data1);
       //add more parameters as needed  and update insert query

        try
        {
           connection.Open();
           cmd.ExecuteNonQuery();
        }
        catch(Exception ex)
        {
          //log error
        }    
     }
  }
 }

Data1あなたがあなたの列名の名前であると仮定します。関連する列が含まれるように sqlStatement を更新します。

ではSaveRep、次のように呼び出すことができます

 public void SaveRep()
 {
   Report objReport=new Report();
   objReport.Data1="Something somethinng";
   objReport.Save();
 }
于 2012-08-29T21:05:28.673 に答える
0
    string connectionString = ....; //adjust your connection string

    string queryString = "INSERT INTO ....;"; //Adjust your query
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        using( SqlCommand command = new SqlCommand(
            queryString, connection))
        {
        connection.Open();
        command .ExecuteNonQuery();
       }
    }
于 2012-08-29T20:58:06.927 に答える