25. januar 2008 - 09:18
Der er
21 kommentarer og 1 løsning
public klasser der gemmer til Access
Hej , Kan man ikke lave en funktion , så man lave update funktion osv. til hele sin database , så man ikke skal skrive det på hver form
Annonceindlæg fra Infor
25. januar 2008 - 09:21
#1
Det jeg mener er hvis man har en MDB med 5 tabller så skal kunne kalde en funktion update("tabelnavn","felter","values") insert("tabeln..... osv.
25. januar 2008 - 09:52
#2
Jo du kan jo en klasse med alle de database funktioner som du ønsker(insert, update, select osv.) og så kalde de enkelte funktioner med parametrene tabel koloner og værdier. I de enkelte funktioner bygger du så en sql kommando op udfra de modtagne parametre.
25. januar 2008 - 10:32
#3
har du et eksembel ... er lidt noob.
25. januar 2008 - 10:37
#4
noget ala: public static DataSet select(string table, string condition) { string sql = "SELECT * FROM " + table + " WHERE " + condition; //Fyr sql'en af som du plejer og returner datasetet }
25. januar 2008 - 10:50
#5
problemet er jeg plejer ikke at fyre noget :-( Kan godt være det er mig der er tosset. men jeg har lavet en funktion med Datagrid etx. når jeg skriver dette this.klasser_tblTableAdapter1.InsertQuery(this.klassetekst.Text); this.klasser_tblTableAdapter1.Update(skytteMDB.klasser_tbl); this.skytteMDB.AcceptChanges(); opdatere den fint , og jeg kan bruge de data. men når jeg lukker så gemmmer den intet burde man ikke bare kunne lave en funktion der søger for at gemme det hele ..
25. januar 2008 - 11:04
#6
har prøvet private void button2_Click(object sender, EventArgs e) { try { // this.Validate(); this.klassertblBindingSource.EndEdit(); this.klasser_tblTableAdapter1.Update(this.skytteMDB.klasser_tbl ); MessageBox.Show("Update successful"); } catch (System.Exception ex) { MessageBox.Show("Update failed" + ex ); } men får en fejl om at update kræver en gyldig række updatecommand }
25. januar 2008 - 11:10
#7
prøv noget i stil med: OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\db1.mdb"); conn.Open(); try { OleDbCommand command = conn.CreateCommand(); try { command = new OleDbCommand(); command.CommandText = "SELECT * FROM " + table + " WHERE " + condition; command.Connection = conn; OleDbDataReader reader = command.ExecuteReader(); while (reader.Read()) { string col0 = reader.GetString(0); string col1 = reader.GetString(1); string col2 = reader.GetString(2); //OSV } } catch(Exception ex) { } } catch(OleDbException ex) { } finally { conn.Close(); } Skal selvfølgelig rettes til mht. dine koloner.
25. januar 2008 - 11:19
#8
keg er slet ikke med ..
25. januar 2008 - 11:22
#9
jeg troede at når jeg definerede/indsatte en MDB i Visual studio , så kom de funtkioner med , så man ikke skal "hardcode" det hele .?
25. januar 2008 - 11:22
#10
okay ... har du en funktion som virker som du bare ikke gider skrive i hver form, er det det?
25. januar 2008 - 11:28
#11
nej problemet er jeg troede .... når jeg nu har et datasat , som jeg har sat op via guides i VS2005 så kunne man gemme de data man ændre. de "gemmes" jo så længe applikation køre men den får ikke skrevet dem til DBén giver det menning eller
25. januar 2008 - 11:30
#12
jeg kan jo se data i mit datagrid . men ved ikke hvordan jeg får det skrevet til databasen
25. januar 2008 - 11:48
#13
Jeg vil ikke afvise at det kan lade sig gøre men jeg har aldrig arbejdet på den måde, sorry.
25. januar 2008 - 11:49
#14
ok hvordna vil du så forslå jeg gør?
25. januar 2008 - 12:17
#15
som beskrevet ovenfor ;-) lave en metode til hver type query som tager de nødvendige parametre og så opbygger en SQL statement dynamisk som fyres af mod databasen.
25. januar 2008 - 12:31
#16
using System; using System.Data; using System.Data.OleDb; using System.Collections; namespace eksamen { public class DataAccessWrite { //private static string sConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=I:\Jfk\MK\GEORAP\georap.mdb"; public static void expTEst(string tabel , string felter, string values) { string sConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\skytte\skytte.mdb"; OleDbConnection dbConn; dbConn = new OleDbConnection(sConnection); try { dbConn.Open(); string sql; sql = "INSERT INTO " + tabel+" ("+felter +") VALUES ('"+ values +"')"; IDbCommand dbCmd; // sql= "INSERT INTO klasser_tbl (klasse_tekst)VALUES ('test') dbCmd = new OleDbCommand(); Console.WriteLine(sql); dbCmd.CommandText = sql; dbCmd.Connection = dbConn; dbCmd.ExecuteNonQuery(); Console.ReadLine(); } catch (Exception ex) { throw ex; } finally { if ((dbConn != null) && (dbConn.State != ConnectionState.Closed)) dbConn.Close(); } } } }
25. januar 2008 - 12:32
#17
osv .. ikke ? havde bare håbet der var en nemmere løsning.
25. januar 2008 - 14:38
#18
Lige præcis, det er så indsæt, dernæst kommer de andre (update, select osv.)
26. januar 2008 - 04:39
#19
Kast eventuelt et blik på MS DAAB !
10. juni 2008 - 14:43
#20
smid et svar tak
11. juni 2008 - 08:34
#21
Svar :)
11. juni 2008 - 08:34
#22
Og så lige et rigtigt svar ;-)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.