字符串转换错误""

Tdignan87.

众所周知的成员
加入
2019年7月8日
消息
95
编程经验
Beginner
嗨,我需要一些帮助。
我有一个文本框,用户扫描扫描仪,如果存在条形码,我希望另一种表单似乎允许它们继续,并且如果条形码在DB中不存在,则另一种形式将另一种形式。
我一直在努力。有人可以帮忙吗?

1575152767728.png


C#:
        private void BarcodeTxtBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Return)
            {
                FbConnectionStringBuilder rfs = new FbConnectionStringBuilder();
                rfs.DataSource =
                    "localhost";
                rfs.Port = ;
                rfs.Database = @"";
                rfs.UserID = "sysdba";
                rfs.Password = "";
                rfs.ServerType = FbServerType.Default;

                FbConnection db = new FbConnection(rfs.ToString());

                FbDataReader myReader = null;

                
                string barcodeQuery = "SELECT COMMODITIES.CODE,COMMODITIES.NAME FROM COMMODITIES WHERE BARCODE  = " + BarcodeTxtBox.Text + "  ";
                FbCommand myCommand = new FbCommand(barcodeQuery, db);

                db.Open();
                myReader = myCommand.ExecuteReader();


            
                myReader.Read();
                int count = Convert.ToInt32(myCommand.ExecuteScalar());

                if (count > 0)
                {
                    MessageBox.Show("Existed!");
                }
                else
                {
                    MessageBox.Show("No record");
                }

            }
        }

我现在已经为MessageBoxs添加了邮件盒而不是其他形式。

谢谢
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,892
地点
切萨皮克,va.
编程经验
10+
如果您输入无效的条形码值,则会收到相同的错误吗?

除此之外,您应该使用参数化查询,而不是将字符串一起连接在一起 - 特别是因为您只是采用TextBox值并直接将其粘附到您的查询中。您正在打开SQL注入攻击。
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,892
地点
切萨皮克,va.
编程经验
10+
就像一边一样,即使你使用的是WPF,它看起来你正在编写WPF代码,好像你还在Winforms中。当您使用MVVM模式时,WPF闪耀。将业务逻辑嵌入到您的视图中是做事的Winforms方式。
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,720
地点
悉尼,澳大利亚
编程经验
10+
If the column is varchar then surely you need to wrap any literal values for it in single quotes. If you use parameters, which I assume are available for that ADO.NET provider, then you wouldn't have to worry about such things.
 
最佳 底部