przeszukiwanie bazy przy pomocy danych z TexBoxa

0

objSqlCommand1.CommandText = "SELECT numer FROM filmy where nazwa_zagraniczna_podtytul= (TextBox1.Text )";

   this.TextBox3.Text = " " + (objSqlCommand1.ExecuteScalar()).ToString();

fragment kodu ,polaczenie z baza dziala ,chcial bym zeby kryterim wyszukiwania bylo to co wpisze do texBox1.

0

Strzelam: objSqlCommand1.CommandText = "SELECT numer FROM filmy where nazwa_zagraniczna_podtytul=(" + TextBox1.Text + ")"; nie działa?

0

nie dziala Invalid column name 'Cars'. this.TextBox3.Text = " " + (objSqlCommand1.ExecuteScalar()).ToString(); --------

0

;)
objSqlCommand1.CommandText = "SELECT numer FROM filmy where nazwa_zagraniczna_podtytul = @nazwa";
objSqlCommand1.Parameters.AddWithValue( "nazwa " ,TextBox1.Text); "

TextBox3.Text = objSqlCommand1.ExecuteScalar().ToString();

0
intelygencja napisał(a)

Strzelam: objSqlCommand1.CommandText = "SELECT numer FROM filmy where nazwa_zagraniczna_podtytul=(" + TextBox1.Text + ")"; nie działa?

Powinno być

objSqlCommand1.CommandText = "SELECT numer  FROM filmy where  nazwa_zagraniczna_podtytul=\"(" + TextBox1.Text + ")\"";</i> nie działa?
0

to zmojej wypowiedzi wyzej dziala ;). dzieki

0

bazka z filmami dzial tak jak chcialem pare fajnych rzeczy tam dorobile . ale mysle ze przydalo by sie tam zrobic obsluge wyjatku lub cos generowac np komunikat gdy filmu nie ma w bazie zeby sie nie wysypywalo ,ma ktos jakis pomysl ?? ;)

0

Tak, dodaj obsługę wyjątków.

0
dawidkal napisał(a)

bazka z filmami dzial tak jak chcialem pare fajnych rzeczy tam dorobile . ale mysle ze przydalo by sie tam zrobic obsluge wyjatku lub cos generowac np komunikat gdy filmu nie ma w bazie zeby sie nie wysypywalo ,ma ktos jakis pomysl ?? ;)

Szkoda na to czasu. Lepiej pisz tak, żeby błędów w ogóle nie było.

0

tego sie nie da tak napisac . jesli w bazie nie bedzie filmu a ktos wpisze taki tytul , sypnie sie . ale juz wymyslilem jak to zrobic .trzeba dorobic tylko komunikat

    try
    {
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = "Data Source=X-QYLAQ0KRMB6TB;Initial Catalog=Filmy;Integrated Security=True";
        conn.Open();
        SqlCommand objSqlCommand = new SqlCommand();
        objSqlCommand.Connection = conn;
        SqlCommand objSqlCommand1 = new SqlCommand();
        objSqlCommand1.Connection = conn;
        objSqlCommand.CommandType = CommandType.Text;
        objSqlCommand1.CommandType = CommandType.Text;
        *ok    *objSqlCommand.CommandText = "SELECT tytul  FROM filmy where nazwa_zagraniczna_podtytul='Cars' ";
        objSqlCommand.CommandText = "SELECT klaser  FROM filmy where tytul =@nazwa ";
        objSqlCommand1.CommandText = "SELECT numer FROM filmy where tytul = @nazwa1";

        *ok  *objSqlCommand.CommandText = "SELECT count(*) as ilosc FROM Filmy";
        *ok    *this.Label1.Text = "Jest  w klaserze nr : " + (objSqlCommand.ExecuteScalar()).ToString();

        objSqlCommand.Parameters.AddWithValue("nazwa ", TextBox1.Text); //bez spacji przed "
        objSqlCommand1.Parameters.AddWithValue("nazwa1 ", TextBox1.Text); //bez spacji przed "
        TextBox2.Text = objSqlCommand.ExecuteScalar().ToString();
        TextBox3.Text = objSqlCommand1.ExecuteScalar().ToString();
        conn.Close();
    }
    catch (Exception NullReferenceException) { TextBox1.Text = NullReferenceException.Message; }
    }
0

Te Try...Catch daj tylko na wrażliwy element, tj. ExecuteScalar (wydajność), a conn.Close() daj w finally.
@down - sprawdź.

0

Co wydajność? Kosztować kosztuje założenie i zdjęcie handlera, tyle samo dla jednej co dla wielu instrukcji.

0
Daron napisał(a)

Te Try...Catch daj tylko na wrażliwy element, tj. ExecuteScalar

A conn.Open(), to już nie jest wrażliwe?

0

daj moze lepiej:

TextBox2.Text = Convert.ToString(objSqlCommand.ExecuteScalar() ?? "Brak filmu")

O ile to .net 3.5. Jesli nie, to:

string film = Convert.ToString(objSqlCommand.ExecuteScalar());
TextBox2.Text = string.IsNullOrEmpty(film) ? "Brak filmu" : film;

Nigdy nie uzywaj wyjatkow do zlapania po prostu przewidywanego mozliwego jednego z wynikow jakiejs operacji. To sie sprawdza na if'ach jak wyzej. Rzucenie wyjatku jest zupelnie niewydajne i niezalecane przy normalnym biegu aplikacji.

0

dzieki pomocy kolegow zrobilem tak :
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=X-QYLAQ0KRMB6TB;Initial Catalog=Filmy;Integrated Security=True";
conn.Open();
SqlCommand objSqlCommand = new SqlCommand();
objSqlCommand.Connection = conn;
SqlCommand objSqlCommand1 = new SqlCommand();
objSqlCommand1.Connection = conn;
objSqlCommand.CommandType = CommandType.Text;
objSqlCommand1.CommandType = CommandType.Text;
objSqlCommand.CommandText = "SELECT klaser FROM filmy where tytul = @nazwa ";
objSqlCommand1.CommandText = "SELECT numer FROM filmy where tytul = @nazwa1 ";
objSqlCommand.Parameters.AddWithValue("nazwa ", TextBox1.Text);
objSqlCommand1.Parameters.AddWithValue("nazwa1 ", TextBox1.Text); //bez spacji przed "
object result = objSqlCommand.ExecuteScalar();
if (result != null)
{
TextBox2.Text = result.ToString();
TextBox3.Text = result.ToString();
}
else { TextBox1.Text = "Nie ma takiego filmu w bazie";
TextBox2.Text = ""; TextBox3.Text = "";
}
conn.Close();
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1