我寫我用的方法(parameters.add),但一個軟件,該軟件不提供當我將數據添加到數據庫中,我得到以下錯誤:參數化查詢預計參數「@Id」,
參數化查詢需要提供參數「@Id」,而不是 。
我看到了幾個主題,但我無法解決我的問題。
The parameterized query expects the parameter ###### which was not supplied
The parameterized query expects the parameter , which was not supplied
我把C#代碼及以下存儲過程的代碼:
private void btnSave_Click(object sender, EventArgs e)
{
string cs = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TranscactionAccountNumber;Data Source=DESKTOP-5DJFFQP";
string name = txtName.Text;
int shomarepeygiri = int.Parse(txtShomarePeygiri.Text);
string date = dtpDate.Shamsi;
decimal mablagh = decimal.Parse(txtMablagh.Text);
string comment = txtComment.Text;
using (cn = new SqlConnection(cs))
using (cmd = new SqlCommand("InsertTransaction", cn))
{
cmd.Parameters.Add("@Id",SqlDbType.Int);
cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 100).Value = name;
cmd.Parameters.Add("@ShomarePeygiri", SqlDbType.Int).Value = shomarepeygiri;
cmd.Parameters.Add("@Mablagh", SqlDbType.Decimal).Value = mablagh;
cmd.Parameters.Add("@Comment", SqlDbType.NVarChar).Value = comment;
cmd.Parameters.Add("@Date", SqlDbType.VarChar).Value = date;
if (cn.State == ConnectionState.Closed)
cn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Transaction Added Successfully..", "Register Transaction", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
Create procedure InsertTransaction
(
@id int,
@Name nvarchar(100),
@ShomarePeygiri int,
@Mablagh decimal(18, 0),
@Comment nvarchar(MAX),
@PersianDate varchar(10)
)
AS
Insert Into TransactionTable(id,[Name],ShomarePeygiri,Mablagh,Comment,PersianDate)
values (@id,@Name,@ShomarePeygiri,@Mablagh,@Comment,@PersianDate)
你是不是給人一種值給Id。你只是宣佈它。你給所有其他參數一個值,但不是那個。 – ADyson
似乎沒有爲參數提供值:'cmd.Parameters.Add(「@ Id」,SqlDbType.Int);' – Fabio
您不爲@ID參數設置任何值。其次,一個調用存儲過程的命令應該在它的CommandType屬性中說出 – Steve