2012-08-29 44 views
0

我有班级报告和类程序,我想完成(迄今为止没有运气)是从类程序和方法SaveRep()发送数据到类Report方法Save()并保存它在这个方法。保存对象到数据库c#

我很抱歉,如果问题是严重制定,我真的坚持在这一点,请帮助。由于

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 
    } 
    } 
} 
+1

恐怕这里没有问题。尝试取得一些进展,并回来更具体的问题。 –

+0

我的问题是如何发送数据对象从SaveRep()保存()并将其保存到db.If有人有任何示例,将非常有帮助 – DareDevil

回答

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(); 
} 
+0

好吧,我得到这部分保存()方法,但如何提供数据从SaveRep()方法到她? – DareDevil

+0

@DareDevil:我加了那个答案 – Shyju

+0

哦,我没有看到它。谢谢;), – DareDevil

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(); 
     } 
    } 
0

一件小事情,以前的发言者都没有注意到,那是你Report类是严重破损。为什么在变量上使用static关键字?不要那样做!那么,除非你知道它做了什么,在这里我有你没有的感觉。更新您的报告类是这样的:在原始代码

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变量的全局/共享。这意味着如果您创建的报表对象数为new,则它们都具有相同的ID,Data1和Data2。对这500个对象中的任何一个进行任何更改都会导致所有对象发生更改。但这是误导,对象不会改变。他们只会有相同的数据。看着“身份证”字段,我想你宁愿要一个单独的对象与单独的数据分开记录..