» »

[C# + Access07] Ne prebere ID-ja

[C# + Access07] Ne prebere ID-ja

golobich ::

Pozdravljeni!

Zanima me če bi mi pomagali pri sledečem problemu. Program mi namreč ne prebere KS_ID, čeprav baza ni prazna in pride do ujemanja v KS_KS, vendar nikjer ne vidim kje sem naredil napako oz. zakaj mi ne prebere KS_IDja.

koda:
                //dodamo naslov v bazo
                query = "SELECT KS_ID FROM tabKS WHERE KS_KS=@ks";
                dAdapter.SelectCommand = new OleDbCommand(query, conn);
                dAdapter.SelectCommand.Parameters.Add("@ks", OleDbType.LongVarChar).Value = txtKS.Text;
                dataSet.Clear();
                dAdapter.Fill(dataSet);

                query = "INSERT INTO tabNaslovi (NASLOVI_UlicaHisna, NASLOVI_Posta, NASLOVI_KS) VALUES (@ulica, @posta, @ksi)";
                dAdapter.InsertCommand = new OleDbCommand(query, conn);
                dAdapter.InsertCommand.Parameters.Add("@ulica", OleDbType.LongVarChar).Value = txtUlicaHisna.Text;
                dAdapter.InsertCommand.Parameters.Add("@posta", OleDbType.LongVarChar).Value = cmbPosta.Text;
                MessageBox.Show(txtKS.Text);
                MessageBox.Show(dataSet.Tables[0].Rows[0][0].ToString());
                dAdapter.InsertCommand.Parameters.Add("@ksi", OleDbType.Integer).Value = dataSet.Tables[0].Rows[0][0];
                
                conn.Open();
                dAdapter.InsertCommand.ExecuteNonQuery();
                conn.Close();


Hvala za kakršno koli pomoč.

Lp, golobich ;)

win64 ::

Kako preveriš, da pride do ujemanja?

Za branje enega podatka lahko uporabiš ExecuteScalar
http://msdn.microsoft.com/en-us/library...

Za pisanje pa tudi ne potrebuješ adapterja, za oba ukaza lahko uporabiš samo OleDbCommand.

Sicer nevem, če dela to z accesom, vendar bi se ta dva sql stavka dala združiti v enega:
query = "INSERT INTO tabNaslovi (NASLOVI_UlicaHisna, NASLOVI_Posta, NASLOVI_KS) VALUES (@ulica, @posta, (SELECT KS_ID FROM tabKS WHERE KS_KS=@ks))

golobich ::

win64, sem probal tudi brez tistega @ks in sem samo "limal" niz. Tako da je bila na koncu poizvedba sledeča:
"SELECT KS_ID FROM tabKS WHERE KS_KS='Semic'". To je bil query (sem ga izpisal z MessageBoxom za vsak slučaj).
No in preverim v tabKS če je slučajno kje KS_KS='Semic' in dejansko je. Zadnja vrstica je bila taka in bi se moralo ujemati.
Sem preveril še da ni slučajno v bazi kak odvecen presledek za zadnjo črko in podobnega...in ni. Dejansko mi res ni jasno kako
da je dataSet prazen oz kako da mi ne izbere idja.

Lp, golobich

KrEn1234 ::

Poskusi za branje raje uporabiti OleDbCommand. Če delaš kakšno resnejšo applikacijo ne uporabljaj takšen način zapiranja povezav na DB. Hitro lahko
ostaneš z odprtimi konekcijami,..

npr:
public void ReadMyData(string myConnString)
{
string mySelectQuery = "SELECT OrderID, CustomerID FROM Orders";
OleDbConnection myConnection = new OleDbConnection(myConnString);
OleDbCommand myCommand = new OleDbCommand(mySelectQuery,myConnection);
myConnection.Open();
OleDbDataReader myReader = myCommand.ExecuteReader();
try
{
while (myReader.Read())
{
Console.WriteLine(myReader.GetInt32(0) + ", " + myReader.GetString(1));
}
}
finally
{
// always call Close when done reading.
myReader.Close();
// always call Close when done reading.
myConnection.Close();
}


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

SQL problem

Oddelek: Programiranje
141712 (1330) win64
»

razložitev nekaterij elementov v visual studio 05

Oddelek: Programiranje
72128 (1933) darkolord
»

problem v C#

Oddelek: Programiranje
211986 (1701) dvojka
»

c# vprasanje

Oddelek: Programiranje
171863 (1542) user4683
»

branje byte[] iz MS access-ove baze

Oddelek: Programiranje
81950 (1860) BHawk

Več podobnih tem