我有一个我在这里附加的winform ..当我在Customer表中插入记录时,我还想在我的数据库中的orderlineitems表中添加记录,其中也将插入Order表中的记录。 我已在Customer表中插入记录,但是当我在OrderLineItems表中插入记录时,它显示错误。
我还想问一下,我的数据库中的OrderLineItems表包含以下列:
在我的表单上,我只有数量,特定和费率字段,我可以从中获取其值,但我的winform上没有Status和Orderid值。我如何获得status和orderId的值呢?
我的代码是:
private void buttonInsert_Click(object sender, EventArgs e)
{
string SQL = String.Format("Insert into Customer values ('{0}','{1}','{2}')", textBoxName.Text, textBoxContactNo.Text, textBoxAddress.Text);
//string SQL1 = String.Format("Insert into Order values ({0},'{1}','{2}',{3})",);
DataManagementClass dm = new DataManagementClass();
int result = dm.ExecuteActionQuery(SQL);
if (result > 0)
{
for (int i = 0; i < recordsDataGridView.RowCount ; i++)
{
string query = String.Format("Insert into OrderLineItems values({0},'{1}','{2}','{3}',{4})",7,QuantityColumn, ParticularColumn, RatesColumn,1);
dm.ExecuteActionQuery(query);
}
//string query = String.Format("Insert into OrderLineItems values ('{0}','{1},'{2}'
}
我在这里做错了什么。请指导我正确的方法。 感谢名单..
答案 0 :(得分:2)
建议一些增强功能,以使您的业务逻辑正常运行和维护:
CreateCustomer
和CreateLineItem
例程编写存储过程。CreateCustomer
和CreateLineItems
等新方法。从按钮单击处理程序方法调用这些方法。 private void buttonInsert_Click(object sender, EventArgs e)
{
int result = CreateCustomer(textBoxName.Text.Trim(),
textBoxContactNo.Text.Trim(),
textBoxAddress.Text.Trim());
if (result > 0)
{
foreach(var row in recordsDataGridView.Rows)
{
CreateLineItem(quantity, particulars, rates);
}
}
答案 1 :(得分:1)
您正在插入如下值:'{1}','{2}','{3}'
这导致我假设您正在插入字符串值
如果字符串值中存在叛逆,则会导致语法错误
试试
yourstring.replace("'", "''")
论点。
另外,请像p.campbell建议的那样..
使用参数来防止SQL注入。
有人可能会利用你代码的开放安全漏洞。