2014-05-17 2 views
1

저는 프로그래밍에 익숙하지 않으므로 나와 함께하시기 바랍니다. 프로젝트 전반에서 다음과 같은 코드를 여러 클래스로 작성했으며 입력 내용이 데이터베이스에 저장되지 않는 이유가 궁금합니다. 며칠 동안이 문제로 고심하고 웹의 가장 어두운 부분을 없애고 있기 때문에 누군가가 나를 도울 수 있기를 바랍니다.데이터베이스 MVC 패턴으로 저장

우선 내 응용 프로그램에서도 WCF를 사용하고 있다는 것을 알려야합니다. 따라서 메서드는 WCFService를 통해 클라이언트에 호출되어야합니다. 도움이 될 것입니다.

PS : 여기가 도움이 내 솔루션 개요의 스크린 샷의 경우 : http://imgur.com/JV9Xl3K

클라이언트 코드 :

using Client.WCFServiceRef; //My wcf Service reference 

namespace Client 
{ 
    public partial class MainWindow : Window 
    { 
     private WCFServiceClient Client; 
     public MainWindow() 
     { 
      InitializeComponent(); 
      Client = new WCFServiceClient(); 
     } 
     public string getMovieName() 
     { 
      string movieName = txtName.Text; 
      return movieName; 
     } 
     public string getMovieLength() 
     { 
      string movieLength = txtLength.Text; 
      return movieLength; 
     } 
     public string getMovieDesc() 
     { 
      string movieDesc = txtDescription.Text; 
      return movieDesc; 
     } 
     private void btnMovies_Click(object sender, RoutedEventArgs e) 
     { 
      Client.addMovie(getMovieName(), getMovieLength(), getMovieDesc()); 
     } 
    } 
} 

내 MovieController 코드 :

using Server.DB; 

namespace Server.Control 
{ 
    class MovieCtr 
    { 
     public void addMovie(string movieName, string movieLength, string movieDesc) 
     { 
      DBMovie conObj = new DBMovie(); 
      conObj.addMovie(movieName, movieLength, movieDesc); 
     } 
    } 
} 

내 DBMovie 클래스

namespace Server.DB 
{ 
    public class DBMovie 
    { 
     DBConnection dbCon = new DBConnection(); 
     public void addMovie(string movieName, string movieLength, string movieDesc) 
     { 
      dbCon.openConnection(); 
      SqlCommand com = new SqlCommand(); 
      string query = "INSERT into movies (Name, Runtime, Description) VALUES ('" + movieName + "','" + movieLength + "','" + movieDesc + "');"; 
      com.CommandText = query; 


     } 
    } 
} 

마지막으로 내 dbconnection 클래스

namespace Server.DB 
{ 
    public class DBConnection 
    { 
     SqlConnection sc = new SqlConnection(); 
     public void openConnection() 
     { 
      try 
      { 
       sc.ConnectionString = ("Data Source=balder.ucn.dk;Initial Catalog=dmaa0213_6;User ID=dmaa0213_6;password=XXXXXX"); 
       sc.Open(); 
      } //endTry 
      catch (SqlException ex) 
      { 
       Console.WriteLine("Could not open connection to database"); 
       Console.WriteLine(ex); 
      } 
     } 
     public void closeConnection() 
     { 
      sc.Close(); 
     } 
    } 
} 

답변

1

당신은 SqlCommand 개체의 ExecuteNonQuery는을 호출해야합니다.

string query = "INSERT into movies (Name, Runtime, Description) VALUES ('" + movieName + "','" + movieLength + "','" + movieDesc + "');"; 
com.CommandText = query; 
com.ExecuteNonQuery(); 

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspx

한가지 더, 당신은 명령 개체에 대한 연결을 연결해야합니다. 위 웹 페이지의 예제에는 SqlCommand 생성자로 전달되는 SqlConnection 개체가 있습니다. 이 기능이 제대로 작동하려면 코드를 다시 작성해야합니다.

+0

뭔가를 한 것처럼 보였지만 버튼을 클릭하면 응용 프로그램이 충돌합니다. (버튼이 많이하지 않는 것보다 훨씬 좋을 것 같아요.) –

+0

문제는 앞서 말했듯이 프로그래밍을 처음 접했을 때 그 의미가 무엇인지 확실하지 않습니다. –

+0

예를 들어 using 문이 제대로 사용되고 있는지 확인하는 것이 중요합니다. SQL 연결이 완료되면 SQL 연결이 제대로 처리되도록합니다 (http://www.hanselman.com/blog/WhyTheUsingStatementIsBetterThanASharpStickInTheEyeAndASqlConnectionRefactoringExample.aspx) – bytedreamer

관련 문제