SQL Abfrage in C#

OP #2768942
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:
Gast #2768970
dann müsste man erstmal wissen was du mit der eingabezeile machst.

Denn diese meldung kommt micht vom SQL-Sever (du bist doch der jenige 
mit dem SQL-Server?)
OP #2768982
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
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
__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
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ß
Gast #2771076
Der ConnectionString geht natürlich auch so:

1
  connect = new SqlConnection("Data Source=DBSERVER;
2
                Initial Catalog=DATENBANKNAME;
3
                Integrated Security=sspi;
4
                Connection Timeout=100");

Gruß
OP #2771675
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
OP #2771695
Hi Leute,

Hab das Problem gefunden.
Die Typen stimmen nicht überein.
mt ist vom Typ object und die tabelle erwartet einen String.

dataTable1.Rows.Add(mt, mt) -> dataTable1.Rows.Add(mt.ToString(), 
mtToString())

So gehts.

Danke für die Tipps.
Gruß Agit

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.