Ghulam Dastgeer
Ghulam Dastgeer

Reputation: 1

How can I add database query data into the textbox?

    private void button1_Click(object sender, EventArgs e)
    {
        System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
        // modify the connection string and include any additional required properties for your database
        conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
            @"Data Source=C:\Users\Dastgeer\Documents\Visual Studio 2013\Projects\UrduStemmerProject\UrduStemmerProject\Resources\ProjectDatbase.mdb";
        try
        {
            conn.Open();

            System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(@"SELECT PreFix FROM UrduStemmerTbl WHERE (word = '"+InputWord+"')");
            cmd.Connection = conn;
            cmd.ExecuteNonQuery();

            System.Data.OleDb.OleDbCommand cmd2 = new System.Data.OleDb.OleDbCommand(@"SELECT Stem FROM UrduStemmerTbl WHERE (word = '" + InputWord + "')");
            cmd2.Connection = conn;
            cmd.ExecuteNonQuery();

            System.Data.OleDb.OleDbCommand cmd3 = new System.Data.OleDb.OleDbCommand(@"SELECT PostFix FROM UrduStemmerTbl WHERE (word = '" + InputWord + "')");
            cmd3.Connection = conn;
            cmd.ExecuteNonQuery();

            //Text boxes names are

            //prefixOutput.Text =;
            //stemOutput.Text = ;               
            //postfixOutput.Text = ;

            MessageBox.Show("Data Stemmed!");

        }
        catch (Exception ex)
        {
            MessageBox.Show("Failed to connect to data source");
        }
        finally
        {
            conn.Close();
        }
    }

Upvotes: 0

Views: 253

Answers (1)

Soner Gönül
Soner Gönül

Reputation: 98740

You don't need to use ExecuteNonQuery for a SELECT statement. This method just executes your query, it doesn't return any data or something.

Looks like your queries returns one row with one column, you can use ExecuteScalar method instead.

But more important, you should always use parameterized queries. This kind of string concatenations are open for SQL Injection attacks.

Also use using statement to dispose your connection and command automatically instead of calling Close method manually.

By the way, you can combine all OleDbCommand objects into one since you query the same table for different columns.

using(var conn = new OleDbConnection(connString))
using(var cmd = conn.CreateCommand())
{
      cmd.CommandText = @"SELECT PreFix, Stem, PostFix FROM UrduStemmerTbl WHERE word = ?";
      cmd.Parameters.Add("?", OleDbType.VarWChar).Value = InputWord;
      // I assume your column type
      conn.Open();
      using(var dr = cmd.ExecuteReader())
      {
           if(dr.Read())
           {
              prefixOutput.Text = dr.GetString(0);
              stemOutput.Text = dr.GetString(1);
              postfixOutput.Text = dr.GetString(2);
           }
      }
}

Upvotes: 2

Related Questions