2016-12-25 12 views
0

私は大学で私のプロジェクト講義のためのホテル管理システムを開発しています。私はあなたが私が下に貼り付けたコードを修正するのを手伝ってくれるようお願いします。 Visual Studio Expressでプログラムに入力した入力を転送して保存しない理由がわかりません。これはコードです:あなたが写真で見るように、例えばプログラムへの入力をデータベースに保存する

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

namespace WindowsFormsApplication2 
{ 
    class Database 
    { 
     SqlConnection con; 
     public Database() 
     { 
      con = new SqlConnection("server=.,database=Guest; Integrated Security = True"); 
     } 

     public bool AddGuest(string ID, string Phone, string Adress, string FName, string LName, string Email, string RoomNo) 
     { 
      bool durum = false; 
      SqlCommand cmd = new SqlCommand(@"declare @guest_id nvarchar(50),@guest_phone nvarchar(50),@guest_adress ntext,@guest_fname ntext,@guest_lname ntext,@guest_email ntext,@room_no int = @room_no; 
select @guest_id = Guest.guest_id from Guest where Guest.room_no = '103'; 
select @guest_phone = Guest.guest_phone from Guest where Guest.room_no = '103'; 
select @guest_adress = Guest.guest_adress from Guest where Guest.room_no = '103'; 
select @guest_fname = Guest.guest_fname from Guest where Guest.room_no = '103'; 
select @guest_lname = Guest.guest_lname from Guest where Guest.room_no = '103'; 
select @guest_email = Guest.guest_email from Guest where Guest.room_no = '103'; 

insert into Guest(guest_id,guest_phone,guest_adress,guest_fname,guest_lname,guest_email,room_no)values(@guest_id,@guest_adress,@guest_fname,@guest_lname,@guest_email,@room_no) 

)", con); 
      cmd.Parameters.AddWithValue("@id", ID); 
      cmd.Parameters.AddWithValue("@phone", Phone); 
      cmd.Parameters.AddWithValue("@adress", Adress); 
      cmd.Parameters.AddWithValue("@fname", FName); 
      cmd.Parameters.AddWithValue("@lname", LName); 
      cmd.Parameters.AddWithValue("@email", Email); 
      cmd.Parameters.AddWithValue("@room_no", RoomNo); 
      con.Open(); 
      try 
      { 
       cmd.ExecuteNonQuery(); 
       durum = true; 
      } 
      catch (Exception) 
      { 
      } 
      con.Close(); 
      return durum; 
     } 
     private void ekle_Click(object sender, EventArgs e) 
     { 

     } 
    } 
} 

enter image description here

、私はゲストID、姓、名を入力していますし、私は彼らが保存したいですデータベース。私はビジュアルにデータベースを接続し、それに従ってコードを作成しました。しかし、まだ動作しません。

+0

次の接続文字列があるべきいずれかのサーバー(あなたは@roomno =「」+ RoomNo +「"を意味しました) =。\ SQLExpressまたは。\ SQLStandardです。 SQL Serverに付属のSQL Server Management Studio(SSMS)を使用して、問題のデバッグを支援します。データベースにクエリを実行して、データが追加されたかどうかを確認できます。接続文字列のサーバー名は、SSMSのログインウィンドウと同じにする必要があります。間違ったデータベースに書き込んでいる可能性がありますので、SSMSエクスプローラのすべてのデータベースをチェックしてください。 – jdweng

+0

データベースは1つだけですが、SQL Server Management Studio 2014も使用しています。これはデータベースのログイン画面のスクリーンショットです:http://i.hizliresim.com/MoayGg.png これは内部のスクリーンショットです: http://i.hizliresim.com/DByRbv.png –

+0

接続文字列はserver =、\ cembilalまたはserver = CEM-BILAL \ cembilalのいずれかにする必要があります。 'cembilal'はデータベースのインスタンスです。あなたのデータベース名も間違っている必要がありますホーチュ(ゲストではない)する必要があります。私は通常、自分のSQLステートメントで正しいデータベースを選択するためにクエリの最初に 'Use hocu'を入れます。または、データベース名を接続文字列に追加します。あなたは私があなたがSQL Serverの別のインスタンスに書き込んでいると思うように導いてくれるhocuを指定していません。あなたのケースのSQL Serverのインスタンスはcembilalです。あなたのPCにSQL Serverの2つのインスタンスがインストールされていると思われます。 – jdweng

答えて

0

このSQL文をカットしてSQL Server管理スタジオにドロップし、実行されているかどうかを確認します。あなたは主にあなたの変数のためにいくつかのエラーをスローすることがわかります。

私は簡潔の見直しで見つかったいくつかのこと:

  1. VARCHAR(50)にそれらの宣言を変更ntext型は使用しないでください。
  2. @room_no int = @room_noは失敗します。
  3. あなたのSQLのパラメータと一致していないあなたのパラメーターaddwithvalue(これのあなたが知っていた?)
関連する問題