Solved

How do I search in a database and get the values out?

Posted on 2009-05-03
4
165 Views
Last Modified: 2012-05-06
I have the code below. But I dont know how to get the info out.

Lets say I find the thing I was searching for.....how can I get it out? And will the return value be null if it doesnt exist?
Boolean flag = false;
        if (Page.IsValid)
        {
            String myConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source= C:\\Documents and Settings\\MFL\\Dokumenter\\Visual Studio 2005\\WebSites\\WebSite\\WebSite\\Tenta1\\Nwind.mdb";
            OleDbConnection myConnection = new OleDbConnection(myConnectionString);
            string myInsertQuery = "SELECT * FROM Customers WHERE (CustomerID) ='" + SearchTextBox.Text + "'";          
            OleDbCommand myCommand = new OleDbCommand(myInsertQuery);
            myCommand.Connection = myConnection;
            myConnection.Open();
            myCommand.ExecuteNonQuery();
            myCommand.Connection.Close();

Open in new window

0
Comment
Question by:Mickeys
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
4 Comments
 
LVL 4

Accepted Solution

by:
cauos earned 500 total points
ID: 24289582
first of all let me clerify one thing for you:
ExecuteNonQuery(); used to executes a Transact-SQL statement against the connection and returns the number of rows affected by executing UPDATE, INSERT, or DELETE statements.
ExecuteReader():Executes the CommandText against the Connection, and returns an DbDataReader.by executing SELECT statement .
ExecuteScalar():Executes the query and returns the first column of the first row in the result set returned by the query. All other columns and rows are ignored.

and in your case you should use ExecuteReader() because you return one record from the reader.

in the example below i assume you have text boxs and you want to bind the data return to those textBoxs
Boolean flag = false;
        if (Page.IsValid)
        {
            String myConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source= C:\\Documents and Settings\\MFL\\Dokumenter\\Visual Studio 2005\\WebSites\\WebSite\\WebSite\\Tenta1\\Nwind.mdb";
            OleDbConnection myConnection = new OleDbConnection(myConnectionString);
            string myInsertQuery = "SELECT * FROM Customers WHERE (CustomerID) ='" + SearchTextBox.Text + "'";          
            OleDbCommand myCommand = new OleDbCommand(myInsertQuery);
            myCommand.Connection = myConnection;
            myConnection.Open();
            OleDbDataReader rdr=myCommand.ExecuteReader();
rdr.Read();
txtBox1.Text=rdr[0].ToString();
......
....
txtBox2.Text=rdr[1].ToString();
txtBoxn.Text=rdr[n].ToString();
            myConnection.Close();

Open in new window

0
 

Author Comment

by:Mickeys
ID: 24289623
aha. but when I try to run the code I get
+            rdr[0]      'rdr[0]' threw an exception of type 'System.InvalidOperationException'      object {System.InvalidOperationException}

Is the statement wrong?
0
 

Author Comment

by:Mickeys
ID: 24289634
Hmm it seems if I write somehting that doesnt exicst i get that?? Could that be correct?
0
 
LVL 4

Expert Comment

by:cauos
ID: 24289723
if there is no record return this error will occur; and to be in the safe side use the line of code
 if (rdr.HasRows)
        {
        txtBox1.Text=rdr[0].ToString();
......
....
txtBox2.Text=rdr[1].ToString();
txtBoxn.Text=rdr[n].ToString();

        }
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

If you find yourself in this situation “I have used SELECT DISTINCT but I’m getting duplicates” then I'm sorry to say you are using the wrong SQL technique as it only does one thing which is: produces whole rows that are unique. If the results you a…
A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

740 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question