2017-08-19 20 views
-1

Ado.Netを使用してSQLに "insert、delete、update、display"オプションをコーディングしようとしています私の割り当て。私がまだ学んでいるように、私のコードは長いかもしれません。私がエラーを起こしている場所を確認し、私に言いなさい。コードは途中まで挿入されています。私が手エラー "System.Data.SqlClient.SqlException 'の未処理の例外がSystem.Data.dllで発生しました"

エラーは次のとおりです。

enter image description here

私のコードは次のとおりです。

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

namespace Crud 
{ 
    class Program 
    {  
     static void Main(string[] args) 
     { 
      Console.WriteLine("--What do you want to do?--");    
      Console.WriteLine(" 1. Insert\n 2. Update\n 3. Delete\n 4. Display\n"); 
      int choice=int.Parse(Console.ReadLine()); 
      if (choice == 1) 
      { 
       Console.Write("Enter Student name:"); 
       string SName=Console.ReadLine(); 
       Console.Write("Enter Student Mobile Number:"); 
       string SMob = Console.ReadLine(); 
       Console.Write("Enter student fees:"); 
       string Sfees = Console.ReadLine(); 
       Console.Write("Enter student course:");     
       string course=Console.ReadLine(); 
       SqlConnection con = new SqlConnection("Data Source=Sachin-PC;Initial Catalog=ADOProject;Integrated Security=True"); 
       SqlCommand cmd = new SqlCommand(); 
       cmd.CommandType = CommandType.Text; 
       cmd.CommandText = "insert into focusstudents values(@name,@mobile,@fees,@course)"; 
       cmd.Parameters.AddWithValue("@name",SName); 
       cmd.Parameters.AddWithValue("@mobile",SMob); 
       cmd.Parameters.AddWithValue("@fees", Sfees); 
       cmd.Parameters.AddWithValue("@course", course); 
       cmd.Connection = con; 
       con.Open(); 
       int l = cmd.ExecuteNonQuery(); 
       if (l > 0) 
       { 
        Console.WriteLine("Inserted Successfully"); 
        cmd.CommandText = "select * from focusstudents"; 
        SqlDataAdapter da = new SqlDataAdapter(cmd); 
        DataTable dt = new DataTable(); 
        da.Fill(dt); 
        if (dt.Rows.Count > 0) 
        { 
         foreach (DataRow dr in dt.Rows) 
         { 
          Console.Write("{0}{1}", dr[0], dr[1]); 
         } 
        } 
        else 
        { 
         Console.WriteLine("There is no data to display, add any data to be shown here"); 
        } 
       } 
       con.Close();    
      } 
      Console.ReadKey(); 
     } 
    } 
} 
+1

'AddWithValue()'の代わりに、明示的に適切な型を追加します。 –

+0

focusstudentsテーブルに余分な列がありますか?列リストの不一致。 "insert into focusstudents(column1、column2 ..)values(...)"に変更してください –

+0

私は主キー列を "id"として持っています – sachin

答えて

0

あなたの例外に追加情報を気づきましたか?それは便利なエラーメッセージです。

列名または指定値の数がテーブル定義と一致しません。

シンプル、以下のようなあなたのINSERTクエリを変更:

insert into focusstudents (column1, column2, column3, column4) values(@name,@mobile,@fees,@course) 

それは動作します。これにより、渡された値が即座にマッピングされるようになります。後でテーブル定義に列を追加しても、これは中断されません。

更新:プライマリキー列は自動シードを取得するように構成するか、挿入時に一意のIDを取得するコードで処理する必要があります。

関連する問題