通过使用ComboBox和TextBox福彩12选5走势图DataGridView的问题

昂贵

新成员
已加入
2020年4月12日
留言内容
2
编程经验
Beginner
大家早上好,

我尝试通过组合框和文本框来影响datagridview的过滤器/福彩12选5走势图,但是当我在文本框上键入第一个字母时,会显示错误消息:

System.Data.SqlClient.SqlException *:'语法不正确's%'。'

这是我的代码:

C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Configuration;
using System.Data.SqlClient;

namespace TESTSEARCH
{
    public partial class FormFind : Form
    {
        public FormFind()
        {
            InitializeComponent();
        }
        private void FormFind_Load(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            string constring = ConfigurationManager.ConnectionStrings["TESTDEMO.Properties.Settings.connect"].ConnectionString;
            SqlConnection con = new SqlConnection(constring);
            
            if (comboBox1.Text == "BD_NameConn")
            {
                SqlDataAdapter Sda = new SqlDataAdapter ("Select BD_NameConn, BD_BaseType, BD_Base, BD_Serer, BD_User, BD_MenuStyle FROM BD WHERE BD_NameConn '" + textBox1.Text + "%'",con);
                DataTable Dt = new DataTable();
                Sda.Fill(Dt);
                dataGridView1.DataSource = Dt;
            }
        }
    }
}


它停在Sda.Fill(Dt)行中;并显示消息:

System.Data.SqlClient.SqlException *:'语法不正确's%'。'


我期待着您的帮助,并在此先感谢您
 
由主持人最后编辑:

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,512
地点
悉尼,澳大利亚
编程经验
10+
请不要发布与问题无关的代码。只有这样 TextChanged 事件处理程序在这里很重要,因此您应该发布的所有内容。您发布的代码越多,我们需要花费更多的时间来研究相关的内容,而我们越不可能这样做。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,512
地点
悉尼,澳大利亚
编程经验
10+
至于问题,您省略了 喜欢 SQL中的运算符:
C#:
SqlDataAdapter Sda = new SqlDataAdapter ("Select BD_NameConn, BD_BaseType, BD_Base, BD_Serer, BD_User, BD_MenuStyle FROM BD WHERE BD_NameConn LIKE '" + textBox1.Text + "%'",con);
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,512
地点
悉尼,澳大利亚
编程经验
10+
您的代码还有其他问题。
  1. 您不应使用字符串串联将值插入SQL代码。您应该始终使用参数。如果您不这样做,可能会发生各种不良情况。例如,如果用户在其中输入单引号 文本框 那么将引发异常。更糟糕的是,恶意用户可能会在其中输入部分SQL语句并删除整个数据库。您可以点击下面我签名中的Blog链接,并查看我在ADO.NET中的Parameters上的文章以了解更多信息。
  2. 在每个数据库上查询数据库是一个坏主意 TextChanged 事件。如果用户想输入五个字符进行福彩12选5走势图怎么办?您将执行五个查询,其中四个是毫无意义的。最好停下来再开始 计时器 TextChanged 事件,然后在 事件。这将使用户可以相当快速地输入多个字符,并且仅在完成后才进行福彩12选5走势图。您可以设置 间隔 到300-500,大多数人几乎不会注意到延迟,但输入速度会足够快,以避免毫无意义的查询。
  3. 您不应该创建一个新的 数据表 每次。只用一个 数据表 并始终保持绑定状态。您可以在每个查询中重新填充。
  4. 您应该通过访问访问字符串 我的设置 ,这意味着将有一个专用属性,不需要魔术字符串即可识别它。
 
最佳 底部