gpt4 book ai didi

c# - 如何使用 C# 将文本框中的十进制值插入数据库

转载 作者:行者123 更新时间:2023-11-30 18:52:19 24 4
gpt4 key购买 nike

我正在使用 SQL Server 数据库和 Windows 窗体应用程序。我有 2 个文本框和 1 个组合框。用户在文本框中输入他们的姓名和工作率,然后从组合框中选择年份。我尝试将这些值插入到我的数据库中。

例如:

2018    Mike    39,72     WORKERS

在数据库中:

year --> nvarchar(4)
name --> nvarchar(50)
rate --> decimal(18,2)
type --> nvarchar(50)

我的代码是这样的:

SqlCommand cmd = new SqlCommand("INSERT INTO USERS(YEAR,NAME,RATE,TYPE) VALUES ('" + yearcombo.Text + "','" + name.Text + "','" + Convert.ToDecimal(rate.Text, CultureInfo.CurrentCulture) + ",'" + "WORKERS" + "')", connection);

我收到这个错误:

There are fewer columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.

最佳答案

这种插​​入方式容易受到注入(inject)攻击,正如您已经发现的那样,很难添加小数点、日期时间等值,...以添加列,请使用 Parameters.Add

SqlCommand cmd = new SqlCommand("INSERT INTO USERS(YEAR,NAME,RATE,TYPE) VALUES (@year, @name,@rate,@type)", connection);

cmd.Parameters.Add("@year", SqlDbType.Int).Value = int.Parse(yearcombo.Text);
cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = name.Text;
cmd.Parameters.Add("@rate", SqlDbType.Decimal).Value = Convert.ToDecimal(rate.Text, CultureInfo.CurrentCulture);
cmd.Parameters.Add("@type", SqlDbType.VarChar).Value = "WORKERS";

假设有人更改了 yearcombo 值(例如在 chrome 中使用 inspect element 一样简单)并将其设置为:

"2019,'a',1,'Something');插入 ARESTRICTEDTABLE(somefield) values('somecolumn'); update AnotherTable set SomeField = 'somevalue');, insert into users(year,name,rate ,类型),(2019,"

那么您的命令文本将是:

"insert into users (year,name,rate,type) (2019,'a',1,'Something');insert into ARESTRICTEDTABLE(somefield) values('somecolumn'); update AnotherTable set SomeField = 'somevalue');, insert into users(year,name,rate,type),(2019," ,'" + name.Text + "','" + Convert.ToDecimal(rate.Text, CultureInfo.CurrentCulture) + ",'" + "WORKERS" + "')"

关于c# - 如何使用 C# 将文本框中的十进制值插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55260242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com