如何在 sql 语句中保存组合框中的选定项目和文本框中的长数字?
Posted
技术标签:
【中文标题】如何在 sql 语句中保存组合框中的选定项目和文本框中的长数字?【英文标题】:How to save selected item in combobox and long number from textbox in sql statement? 【发布时间】:2014-04-19 09:19:49 【问题描述】:我不知道如何保存组合框中的选定项目和文本框中的长数字。这是我的代码:
string num = txtNum.Text;
string q = "insert into new (name, group, phoneNum) values('" + name + "', '" + comboBox1.SelectedItem.ToString() + "', "+ num +")";
bombobox1
包含这些项目:
"group A"
"group B"
"group C"
当我选择其中一项时,它必须保存在数据库中(MS Access),并且txtNum.text
必须有11个数字,如09999999999并保存到MS Access。当我单击按钮时,必须保存组合框和文本框的值。 (我可能对 SQL 语句和字符串格式有错误)。
【问题讨论】:
你目前的结果是什么?你有任何错误吗?如果您尝试添加更多信息,我们只能为您提供帮助。如果您需要帮助,请参阅 How to Ask。 出现类似“INSERT INTO 语句中的语法错误”的错误 【参考方案1】:GROUP是MS Access中的保留关键字,在sql查询中使用时需要将其封装在方括号中
string q = "insert into new (name, [group], phoneNum) values(.......
也就是说,更改 sql 命令字符串和以下数据库代码以使用参数化查询很重要。避免字符串、数字和日期的解析问题至关重要,同时还要避免 Sql Injection 漏洞问题。
string q = "insert into new (name, [group], phoneNum) values(?,?,?)";
OleDbCommand cmd = new OleDbCommand(q, connection);
cmd.Parameters.Add("@p1", name);
cmd.Parameters.Add("@p2", comboBox1.SelectedItem.ToString());
cmd.Parameters.Add("@p3", Convert.ToInt64(num));
cmd.ExecuteNonQuery();
如果PhoneNum 字段是简单的char 字段类型,则传递第三个参数而不进行转换
cmd.Parameters.Add("@p3", num);
【讨论】:
"name" 用于这样的字符串值 (string name = txtAdd.Text + " " + txtAdd2.Text + "."+" " + txtAdd3.Text;) 抱歉,GROUP 不是 NAME 另外我建议将 phoneNum 的数据类型更改为字符串。通常不需要在电话号码上使用长数字(在某些国家,电话号码可以包含字母) 我说过了吗,我认为您应该将数据库中的字段更改为文本而不是数字。无需将 PhoneNumber 视为数字。想想像 (0012)1223-2234 这样的数字。如果要按原样存储它,则需要一个文本字段。当然这意味着你将一个字符串作为参数传递给 INSERT 语句 我用于group和phoneNum的数据类型只是短文本,对吗?以上是关于如何在 sql 语句中保存组合框中的选定项目和文本框中的长数字?的主要内容,如果未能解决你的问题,请参考以下文章
如何根据 DataGridView 中的选定行将组合框中的特定项目设置为选定项?