首页 > 解决方案 > 我在 Visual Studio 中收到一个 SqlException,将数字数据转换为数字 //ASP.NET 项目(第二次上传)

问题描述

我正在尝试从使用按钮 OnClick 的方法创建的表单页面中保存数据。代码如下。

protected void SaveButton_Click(object sender, EventArgs e)
{
    string query = "INSERT INTO[Loans]([CustName], [LoanAmount], [AnualIntRate], [NumPayments]) VALUES(@CustName, @LoanAmount, @AnualIntRate, @NumPayments)";
    SqlConnection cnn = new SqlConnection(@"Data Source=(localdb)\ProjectsV13;Initial Catalog=CheapLoans;Integrated Security=True");
    SqlCommand cmd = new SqlCommand(query, cnn);
    cmd.Connection = cnn;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "INSERT INTO[Loans]([CustName], [LoanAmount], [AnualIntRate], [NumPayments]) VALUES(@CustName, @LoanAmount, @AnualIntRate, @NumPayments)";
    cmd.Parameters.Add("@CustName", SqlDbType.VarChar, 255).Value = custNameTextBox.Text;
    cmd.Parameters.Add("@LoanAmount", SqlDbType.Decimal, 0).Value = decimal.Parse(loanAmtTextBox.Text);
    cmd.Parameters.Add("@AnualIntRate", SqlDbType.Decimal, 0).Value = decimal.Parse(annualInterestRateTextBox.Text);
    cmd.Parameters.Add("@NumPayments", SqlDbType.Int, 0).Value = Int32.Parse(numPaymentsTextBox.Text);

    cnn.Open();
    cmd.ExecuteNonQuery();    //This is where the exception is thrown
    cnn.Close();
    cmd.Parameters.Clear();
    Page.ClientScript.RegisterStartupScript(this.GetType(), "Scripts", "<script>alert('Loan data INSERT success!');</script>");

}

异常读取

“System.Data.SqlClient.SqlException:'将数字转换为数据类型数字的算术溢出错误。语句已终止。'”

我的 Sql Loans 表编码如下:

CREATE TABLE [dbo].[Loans] (
[LoanNum]      INT            IDENTITY (1, 1) NOT NULL,
[CustName]     VARCHAR (50)   NOT NULL,
[LoanAmount]   DECIMAL (9, 2) NOT NULL,
[AnualIntRate] DECIMAL (3, 3) NOT NULL,
[NumPayments]  INT            NOT NULL,
PRIMARY KEY CLUSTERED ([LoanNum] ASC));

我尝试了多种使用INSERTSQL 语句将数据发送到数据库的方法,但每种方法都给我带来了问题。甚至制作一个字符串,我TextBox.Text将表单中的每条数据直接连接到INSERT语句中。我正试图在明天早上为一个学校项目使用这种方法,非常感谢帮助。我打算熬夜直到我可以让它工作。

标签: c#sqlasp.net

解决方案


推荐阅读