问题  SQL查询和RowFilter问题"SOLVED"

莫夫

新成员
已加入
2013年1月16日
留言内容
2
编程经验
Beginner
我在做作业时遇到问题。我的程序几乎完成了,但是我有一个无法解决的问题。问题出在我的一个SQL查询中,该查询应该显示得分不同的玩家。运行程序时,出现以下错误:表达式附近的语法错误。
我的代码:
C#:
// Filters players. WORKS
private void button1_Click(object sender, EventArgs e)
        {
            view.RowFilter = "LastName like '%" + textBox1.Text + "%'";
            if (textBox1.Text == "") view.RowFilter = string.Empty;
        }
// Connection to the database. WORKS
        private void Form1_Load(object sender, EventArgs e)
        {
            DataTable datatable = new DataTable();
            SqlConnection connection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Mattias\Dropbox\C#\Databases\Baseball.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
            connection.Open();
            datatable.Load(new SqlCommand("select * from players", connection).ExecuteReader());
            dataGridView1.DataSource = view = datatable.DefaultView;
            connection.Close();
        }
// The following doesn't work
        private void button2_Click(object sender, EventArgs e)
        {
            decimal minimum = Convert.ToDecimal(textBox2.Text);
            decimal maximum = Convert.ToDecimal(textBox3.Text);


[B]// This is where the debugger throws the exception[/B]
            view.RowFilter = String.Format("BattingAverage >= {0} AND击球平均<= {1}", minimum, maximum);


            if (textBox2.Text == "") view.RowFilter = string.Empty;
            if (textBox3.Text == "") view.RowFilter = string.Empty;
        }
该图显示了GUI以及它应该如何工作。通过在文本框中输入0,3和0,4,可以滤除播放器"Jack Blue".

有人可以帮我,解释一下我可以解决这个问题吗?
//莫夫  :)
 

附件

  •  pic.png
    pic.png
    52.3 KB · Views: 65
Last edited:

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,525
地点
悉尼,澳大利亚
编程经验
10+
好像您使用逗号作为小数点分隔符。我不知道一个事实,但我会猜测DataView.RowFilter支持的伪SQL对文化不敏感,仅支持将点作为小数点分隔符。尝试使用String.Replace将逗号替换为点,然后查看是否获得所需的结果。
 

莫夫

新成员
已加入
2013年1月16日
留言内容
2
编程经验
Beginner
好像您使用逗号作为小数点分隔符。我不知道一个事实,但我会猜测DataView.RowFilter支持的伪SQL对文化不敏感,仅支持将点作为小数点分隔符。尝试使用String.Replace将逗号替换为点,然后查看是否获得所需的结果。

谢谢回复。现在可以用了!!我没有使用String.Replace,但是因为您提到了对文化敏感的问题,所以我将String.Format与rowFilters一起使用,并且它起作用了!这是我所做的:

view.RowFilter = String.Format(Culture.Info.InvariantCulture.NumberFormat,("BattingAverage >= {0} AND击球平均<= {1}"),最小,最大);

太感谢了!

莫夫
 
最佳 底部