用一个整数值向数据库中插入数据
本文关键字:数据库 插入 数据 整数 一个 | 更新日期: 2023-09-27 18:09:48
我正在尝试将数据插入到数据库中的表中,但一个值需要是整数。如何解决这个问题?这是我的代码到目前为止:我有3个文本框,其中的值可以放入和一个按钮发送它。
private void button1_Click(object sender, EventArgs e)
{
//Maak inert query
string sqlIns = @"INSERT INTO Pizza (Soort, beschrijving, prijs)
VALUES ('" + textBoxSoort.Text.Trim() + "','" + textBoxBescrhijving.Text.Trim() + "', '" + tetBoxPrijs +"') ";
//Maak commando object
OleDbCommand command = new OleDbCommand(sqlIns, Connectie);
try
{
//Open de connectie
Connectie.Open();
//Voer commando uit
command.ExecuteReader();
Connectie.Close();
//Opnieuw vullen DatagridVieuw
vullendgv();
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message + ex.StackTrace, "Exception details");
}
finally
{
//Sluiten van de connectie
Connectie.Close();
textBoxSoort.Clear();
textBoxBescrhijving.Clear();
tetBoxPrijs.Clear();
}
}
你的代码有几个问题:
-
使用参数化查询来防止SQL注入。内联查询是魔鬼!
-
在将输入放入查询之前验证输入。如果TextBox的值应该是数字,则验证它或使TextBox只接受数字输入。要实现这一点,创建一个方法来检查输入是否是数字(正则表达式或自定义代码),如果您想要一个纯数字的TetxBox读取本文。
使用正则表达式检查输入是否是数字的例子:
string numericPattern = "^[0-9]+$"; string input = "1zd23"; bool result1 = Regex.IsMatch(value, numericPattern); //false string input = "456"; bool result2 = Regex.IsMatch(value, numericPattern); //true
在方法中:
public bool IsNumeric(string input) { return Regex.IsMatch(input, "^[0-9]+$"); } //Usage: bool result = IsNumeric("qsd4156"); //false
-
在您的查询中,您将TextBox-object
tetBoxPrijs
添加到查询中,而不是其值。还要去掉单引号,否则在SQL中不会将其视为数值。使用以下代码代替tetBoxPrijs.Text
但这必须是数字所以这应该是:
Convert.ToInt32(tetBoxPrijs.Text)
当然,这是没有输入验证的。可以使用正则表达式
使用所提供的方法进行验证:if(IsNumeric(tetBoxPrijs.Text)) { int prijs = Convert.ToInt32(tetBoxPrijs.Text); //use 'prijs' in query }
更新:
更简单的是使用Int32。如GarethD:
所述,TryParse方法int numericValue;
if(Int32.TryParse(tetBoxPrijs.Text, out numericValue))
{
//valid, use in query
}
else
{
//not numeric, inform the user
}