Hej, Jeg har nu luret lidt rundt men er bare blevet mere forvirret. Jeg begyndte for få dage siden at rode med C# i MVS. Men før det bliver rigtigt sjovt kræver det at jeg kan bruge en database til fx at lagre informationer og selvfølgelig hive dem ud igen.
Har som sagt kigget lidt rundt og er blot blevet forvirret over om der skal bruges acces SQL eller hvordan og hvorledes.
Så jeg tænkte på om der er nogle der kunne vise mig hvordan man laver en database og kan indsætte data fra en textbox og hive dataen ud så den vises i formen uden brug at det indbyggede gridview eller hvad det hedder.
Et lille side spørgsmål. Jeg fandt en guide over hvordan man brugte de indbyggede funktioner til at skrive til en database men det så ikke ud til at virke hvis jeg fx til have en form til tilføjelse af data og en anden form der viser det, det virkede kun i samme form. Så gætter på man skal have et bestemt stykke kode på hver form der skal bruge databasen?
Super! Dog lige lidt spørgsmål, har forsøgt med min SQL server på localen og kan gætte mig til at i textboxen skal man skrive forspørgelsen? Men det ser ikke ud til at virke der sker ihvertfald ikke så meget, er det mig der skriver forkert eller kan den ikke bruges på localhost?
1. Du indtaster servernavn, databasenavn, brugernavn og password og trykker "gem konfiguration".
Herefter kan du skrive SQL forespørgelser i tekstboksen. F.eks. "select * from tblusers" osv.
Hvis der opstår en fejl af en eller anden slags. f.eks. manglende adgang til SQL serveren, så vil du få vist stacktrace med fejlbeskrivelsen i log boksen.
Det er kun ment som eksempel, så du kan se koden og få en ide omkring hvordan det kan gøres.
Er du sikker på du har sat din server rigtig op? Hvis du bruger Microsoft SQL Server, så burde der køre en process på din pc der hedder sqlservr.exe (dette siger dog ikke noget om opsætningen, men om serveren kører)
Hmm. Tænkte på, hvis jeg så lavede et program og smed på en anden computer, så skal den computer vel have en sql server installeret? kan man undgå det på nogen måde med databaser?
Som sagt startede jeg for få dage siden :), er ret meget begynder, har dog arbejdet med php og databaser før så er ikke helt blank men eller ved jeg ikke det store
Hvad du har prøvet at gøre koed mæssigt for at få det til at virke, så kan vi komme med pointers, i stedet for at lave det hele for dig. Det er i hvert fald den måde jeg synes man lærer bedst på.
class MainClass { public static void Main(string[] args) { OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Database\\MSAccess\\Test.mdb"); con.Open(); OleDbCommand cmd = new OleDbCommand("SELECT * FROM T1", con); OleDbDataReader rdr = cmd.ExecuteReader(); while(rdr.Read()) { int f1 = (int)rdr[0]; string f2 = (string)rdr[1]; Console.WriteLine(f1 + " " + f2); } con.Close(); } }
og:
using System; using System.Data; using System.Data.OleDb;
namespace E { class MainClass { public static void Main(string[] args) { OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Databases\MSAccess\Test.mdb;"); con.Open(); OleDbDataAdapter da = new OleDbDataAdapter("SELECT f1,f2 FROM t1", con); DataSet ds = new DataSet(); da.Fill(ds, "t1"); foreach(DataTable dt in ds.Tables) { Console.WriteLine(dt.TableName + ":"); foreach(DataRow dr in dt.Rows) { foreach(object o in dr.ItemArray) { Console.Write(" " + o); } Console.WriteLine(); } } Console.WriteLine(ds.Tables["t1"].Rows[1]["f2"]); con.Close(); } } }
Okay jeg er virkelig tard til det kan jeg se :/, jeg bruger visual studio 2010 og windows form applikation.. Er der en der kan vise et direkte eksempel på fx har jeg en database der hedder food.accdb(i tvivl om formatet kan bruges?) i den database er der fx en tabel med navnet food som indeholder name og amount. nu skal jeg trække dataen ud så jeg i min form kan få dataerne i den tabel frem på skærmen, og evt 2 teksfelter hvor man kan tilføje det man skriver til databasen, be om :/
Uden at det her er testet, så ville jeg mene at du kan tilføje dette til SQL filen i mit projekt og så referere til de metoder i stedet for fra formen. Det burde virke.
public class Access { public static System.Data.OleDb.OleDbConnection Conn() { string Databasefile = "STIEN TIL DIN DATABASEFIL"; System.Data.OleDb.OleDbConnection AccessConn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Databasefile + ";Persist Security Info=False"); AccessConn.Open(); return AccessConn; } public static int ExecuteNonQuery(string Query) { try { System.Data.OleDb.OleDbConnection conn = Conn(); System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(Query, conn); int i = cmd.ExecuteNonQuery(); conn.Close(); cmd.Dispose(); conn.Dispose(); return i; } catch (Exception Ex) { throw new Exception("Error processing Command : " + Query, Ex); } } public static System.Data.OleDb.OleDbDataReader AccessDataReader(string Query) {
try { System.Data.OleDb.OleDbConnection conn = Conn(); System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(Query, conn); System.Data.OleDb.OleDbDataReader Sqdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); return Sqdr; } catch (Exception Ex) { throw new Exception("Access Exception ved udtræk af query '" + Query + "'.", Ex); }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.