2015-03-24 2 views
0

Windows Form: Click HereAsp.Net Время выполнения формы Windows Ошибка - «Процедура или функция Вставка задано слишком много аргументов».

Ошибка: Click here

Я создаю приложение, Windows Forms, но всякий раз, когда я отправить форму, я получаю сообщение об ошибке.

Код:

using System; 
using System.Windows.Forms; 
using System.Data.SqlClient; 
using System.Data; 

namespace WindowsFormsApplication12 
{ 
    public partial class Add : Form 
    { 
     string connectionString = @"Data Source=AMAR;Initial Catalog=Test;Integrated Security=True"; 

     public Add() 
     { 
      InitializeComponent(); 
     } 

     private void PhoneNo_KeyPress(object sender, KeyPressEventArgs e) 
     { 
      char ch = e.KeyChar; 

      if (!Char.IsDigit(ch) && ch != 8) 
      { 
       e.Handled = true; 
      } 
     } 

     private void Pin_KeyPress(object sender, KeyPressEventArgs e) 
     { 
      char ch = e.KeyChar; 

      if (!Char.IsDigit(ch) && ch != 8) 
      { 
       e.Handled = true; 
      } 
     } 

    private void cancel_Click(object sender, EventArgs e) 
    { 
     this.Close(); 
    } 

    private void Submit_Click(object sender, EventArgs e) 
    { 
     string Stat = Status.Text; 
     string FirstName = FName.Text; 
     string LastName = LName.Text; 
     string Address = Addr.Text; 
     string Cities = City.Text; 
     string States = State.Text; 
     string Countries = Country.Text; 
     string PhoneNos = PhoneNo.Text;; 
     string EmailId = Email.Text; 
     string PinCode = Pin.Text; 
     string CIn = CheckIn.Text; 
     string COut = CheckOut.Text; 
     string AdultNo = Adult.Text; 
     string ChildNo = Child.Text; 
     string InfantNo=Infant.Text; 
     string RoomNos=RoomNo.Text; 

     TestObject obj = new TestObject(); 

     obj.Stat=Status.Text; 
     obj.FirstName = FName.Text; 
     obj.LastName = LName.Text; 
     obj.Address=Addr.Text; 
     obj.Cities=City.Text; 
     obj.States= State.Text; 
     obj.Countries =Country.Text; 
     obj.PhoneNos= PhoneNo.Text;; 
     obj.EmailId= Email.Text; 
     obj.PinCode=Pin.Text; 
     obj.CIn=CheckIn.Text; 
     obj.COut=CheckOut.Text; 
     obj.AdultNo=Adult.Text; 
     obj.ChildNo=Child.Text; 
     obj.InfantNo=Infant.Text; 
     obj.RoomNos=RoomNo.Text; 

     string spName = "Insert"; 

     SqlConnection conn = new SqlConnection(connectionString); 
     SqlCommand com = new SqlCommand(spName, conn); 

     conn.Open(); 

     com.Parameters.AddWithValue("@Stat", obj.Stat); 
     com.Parameters.AddWithValue("@FirstName", obj.FirstName); 
     com.Parameters.AddWithValue("@LastName", obj.LastName); 
     com.Parameters.AddWithValue("@Address", obj.Address); 
     com.Parameters.AddWithValue("@Cities", obj.Cities); 
     com.Parameters.AddWithValue("@States", obj.States); 
     com.Parameters.AddWithValue("@Countries", obj.Countries); 
     com.Parameters.AddWithValue("@PhoneNos", obj.PhoneNos); 
     com.Parameters.AddWithValue("@EmailId", obj.EmailId); 
     com.Parameters.AddWithValue("@PinCode", obj.PinCode); 
     com.Parameters.AddWithValue("@CIn", obj.CIn); 
     com.Parameters.AddWithValue("@COut", obj.COut); 
     com.Parameters.AddWithValue("@AdultNo", obj.AdultNo); 
     com.Parameters.AddWithValue("@ChildNo", obj.ChildNo); 
     com.Parameters.AddWithValue("@InfantNo", obj.InfantNo); 
     com.Parameters.AddWithValue("@RoomNos", obj.RoomNos); 

     com.CommandType = CommandType.StoredProcedure; 

     com.ExecuteNonQuery(); 

     conn.Close(); 
    } 
} 

public class TestObject 
{ 
    public string Id; 
    public string Status; 
    public string FName; 
    public string LName; 
    public string Addr; 
    public string City; 
    public string State; 
    public string Country; 
    public string PhoneNo; 
    public string Email; 
    public string Pin; 
    public string CheckIn; 
    public string CheckOut; 
    public string AdultNo; 
    public string ChildNo; 
    public string InfantNo; 
    public string RoomNo; 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Address { get; set; } 
    public string States { get; set; } 
    public string Countries { get; set; } 
    public string Cities { get; set; } 
    public string PhoneNos { get; set; } 
    public string EmailId { get; set; } 
    public string PinCode { get; set; } 
    public string CIn { get; set; } 
    public string COut { get; set; } 
    public string RoomNos { get; set; } 
    public string Stat { get; set; }} 
} 

SQL Server хранимые процедуры:

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE [dbo].[Insert] 
    @Stat nvarchar(100), 
    @FirstName nvarchar(100), 
    @LastName nvarchar(100), 
    @Address nvarchar(100), 
    @Cities nvarchar(100), 
    @States nvarchar(100), 
    @Countries nvarchar(100), 
    @PhoneNos int, 
    @EmailId nvarchar(100), 
    @PinCode int, 
    @CIn nvarchar(100), 
    @COut nvarchar(100), 
    @AdultNo int, 
    @ChildNo int, 
    @InfantNo int, 
    @RoomNos int 
AS 
BEGIN 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
    INSERT INTO [Hotel].[dbo].[Details](Status, FirstName, LastName, Address, City, State, Country, PhoneNo, CheckIn, CheckOut, EmailId, Pincode, AdultNo, ChildNo, InfantNo, RoomNo) 
    VALUES(@Stat, @FirstName, @LastName, @Address, @Cities, @States, @Countries, @PhoneNos, @EmailId, @PinCode, @CIn, @COut, @AdultNo, @ChildNo, @InfantNo, @RoomNos) 
END 

Пожалуйста, помогите мне как можно быстрее ... Большое спасибо

+0

Добро пожаловать в Переполнение стека. Можете ли вы опубликовать ошибку, которую вы получаете? –

+0

@Rahul Знак: Спасибо .... Моя проблема решена ... –

ответ

0

Исключение сообщение Пояснений, число параметров, которые вы передаете, не совпадает с параметрами, определенными в вашей хранимой процедуре. Но держать на SP вы публикуемые и коде оба имеют одинаковое количество параметров, но ваше определение SP на Hotel базы данных: -

USE [Hotel] 

В то время как вы ударяете Test базы данных из вашей формы: -

string connectionString = @"Data Source=AMAR;Initial Catalog=Test; 
           Integrated Security=True"; 

Таким образом, вы должны указывать на ту же БД, где развертывается правильно SP: -

Initial Catalog=Hotel; 

Apart, от этого, как примечание стороны, Рассмотрите возможность использования заявление using, чтобы автоматически утилизировать свои дорогостоящие ресурсы базы данных и использовать Add вместо AddWithValue, читайте это Article.

+0

Ty, Изменено, но все еще есть ошибка. Строковые или двоичные данные будут усечены. Заявление было прекращено. –

+0

@ AmarS.Gawade - все еще есть ошибка, но это совсем другое :) Эта ошибка означает, что в вашей базе данных есть какой-либо столбец, длина которого меньше соответствующих данных, которые вы передаете. Например, скажите, что ваш столбец «Адрес» определяется как «nvarchar (100)», но вы можете передавать текст, который превышает 100 символов, поэтому увеличивайте его значение в БД. –

+0

@ AmarS.Gawade - Вы можете принять это как ответ, если это вам помогло. –

Смежные вопросы