SQL Abfrage in C#

OP #2768942
Lesenswert?

Hi,

hab folgendes Datagrid ( siehe Anlage )

Hab in der TextBox folgende Abfrage:

"select * from Data"

aber ich bekomme eine Excepion mi der Meldung:
Syntax Error: Missing operand after 'Data' operator.

Was mache ich falsch?

Gruß

Agit
Angehängte Dateien:
OP #2768982
Lesenswert?

hi Peter,

hab mir en kleines DatGrid mit nem Table gebaut.

der Code sieht wie folgt aus
1
        DataView dv;
2
        public DataGridFilterForm()
3
        {
4
            InitializeComponent();
5

6
            dv = new DataView(dataTable1);
7

8
            dataGridView1.DataMember = "";
9
            dataGridView1.DataSource = dv;
10

11
            dataTable1.Rows.Add("00:00:00", "Mitternacht");
12
            dataTable1.Rows.Add("06:00:00", "Frühstück");
13
            dataTable1.Rows.Add("12:00:00", "Mittag");
14
            
15
        }
16

17
        private void textBox1_Leave(object sender, EventArgs e)
18
        {
19
            dv.RowFilter = textBox1.Text;
20
        }
In der TextBox gebe ich dann meine SQL Abfrage ein

Gruß

Agit
OP #2769134
Lesenswert?

hi,

MaWin schrieb:
> Data ist doch eine Spalte und keine Tabelle, die heisst scheinbar D.

Ja hast recht.
Meien tabelle heißt Table1 und die Spalten heißen Time, DeviceName und 
Data.

Dann müsste doch folgende Anweisung richtig sein.

"Select * From Table1 Where DeviceName Like COM%"
aber da kommt wieder der Fehler, dass nach Table1 ein Operator vermisst 
wird.

Gruß

Agit
Persönliche Seite #2769998
Lesenswert?

__tom schrieb:
> Agit A. schrieb:> In der TextBox gebe ich dann meine SQL Abfrage einder 
RowFilter kann kein SQL.http://msdn.microsoft.com/en-us/library/system.dat...

__tom schrieb:
> Agit A. schrieb:> In der TextBox gebe ich dann meine SQL Abfrage einder 
RowFilter kann kein SQL.http://msdn.microsoft.com/en-us/library/system.dat...

__tom schrieb:
> Agit A. schrieb:> In der TextBox gebe ich dann meine SQL Abfrage einder 
RowFilter kann kein SQL.http://msdn.microsoft.com/en-us/library/system.dat...

__tom schrieb:
> Agit A. schrieb:> In der TextBox gebe ich dann meine SQL Abfrage einder 
RowFilter kann kein SQL.http://msdn.microsoft.com/en-us/library/system.dat...
Gast #2771072
Lesenswert?

Hi,

ich denke Deine Abfrage müßte in etwa so aussehen:


1
private void textBox1_Leave(object sender, EventArgs e)
2
{
3
  connect = new SqlConnection("Data Source=" + DBSERVER + ";
4
                Initial Catalog=DATENBANKNAME;
5
                Integrated Security=sspi;
6
                Connection Timeout=100");
7

8
  connect.Open();
9
  SqlCommand sqlCommand = new SqlCommand("", connect);
10

11
  sqlCommand.CommandText = textBox1.Text; // Deine Eingabe -> SELECT * FROM Tabele1
12

13
  SqlDataReader result = sqlCommand.ExecuteReader();
14
  while (result.Read())
15
  {
16
    dataGridView.Rows.Add(result[0],   // Spalte Time
17
                          result[1],   // Spalte DeviceName
18
                          result[2]);  // Spalte Data
19
  }
20
  result.Close();
21
  connect.Close();
22
}

Gruß
OP #2771675
Lesenswert?

Hi,

hab hier mal die gesamte Klasse:
1
namespace ManualGUI
2
{
3
    public partial class DataGridFilterForm : Form
4
    {
5
        class MyObject
6
        {
7
            public DateTime dt;
8
            public object Tag;
9
            public override string ToString()
10
            {
11
                return dt.ToString();
12
            }
13
            //public SMSC.NISTB.Configuration.Connector Connector;
14
            //public byte[] Data;
15
        }
16

17
        DataView dv;
18
        public DataGridFilterForm()
19
        {
20
            InitializeComponent();
21

22
            dv = new DataView(dataTable1);
23
            
24
            dataGridView1.DataMember = "";
25
            dataGridView1.DataSource = dv;
26

27
            dataTable1.Rows.Add("00:00:00", "Mitternacht");
28
            dataTable1.Rows.Add("06:00:00", "Frühstück");
29
            dataTable1.Rows.Add("12:00:00", "Mittag");
30
            MyObject mt = new MyObject();
31
            mt.dt = DateTime.Now;
32
            mt.Tag = this;
33
            dataTable1.Rows.Add(mt, mt); // Wenn diese zeiel auskommentiert ist funktioniert der Filter.
34
            //timer1.Enabled = true;
35
            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
36
        }
37

38
        private void textBox1_Leave(object sender, EventArgs e)
39
        {
40
            try
41
            {
42
                dv.RowFilter = textBox1.Text;
43
                //dv.RowFilter = Data LIKE 'M*'
44
            }
45
            catch (Exception ex)
46
            {
47
                MessageBox.Show(ex.Message);
48
            }
49
        }
50

51
        private void timer1_Tick(object sender, EventArgs e)
52
        {
53
            dataTable1.Rows.Add(DateTime.Now.ToString(), DateTime.Now.Ticks.ToString());
54
            if (timer1.Interval > 50)
55
            {
56
                timer1.Interval /= 2;
57
            }
58
            dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 2].Cells[0];
59
        }
60

61
        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
62
        {
63
            
64
            object o = dataGridView1[e.ColumnIndex, e.RowIndex].Value;
65
            if (o is MyObject)
66
            {
67
                MyObject mt = (MyObject)o;
68
                MessageBox.Show(mt.Tag.GetType().Name);
69
                //mt.Connector.Send(mt.Data);
70
            }
71
        }
72

73

74
    }
75
}

Meine Anweisungen (z.B. Data LIKE 'M*') klappen nun mit der Textbox, 
aber nur wenn ich dataTable1.Rows.Add(mt, mt); (siehe Code) nicht mache.
Wenn diese Zeile dabei ist kommte olgende Fehlermeldeung
"Cannot perform 'Like' operation on ManualGUI.MyObject and 
System.String"

Was bedeutet das und wieso geht es wenn ich MyObject nicht in die Zeile 
einfüge.

Vielen Dank

Gruß
Agit

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren