Terve,
ongelmia. Teen Windows Forms Application ohjelman ja lisää siihen service-based Databasen. Teen ohjelman loppuun ja lyön sen nippuun Installshield ohjelmalla, kun asennan sen toiselle koneelle ohjelma herjaa tietokannasta.
Miten pystyn korjaamaan ko. virheen, jotta pystyisin asentamaan ohjelman myös toiselle koneelle?
Vai onko olemassa jokin toinen database, millä pitäisi tehdä?
Kiitos vastauksista
-Aki
Moi Aki_26!
Jos et ole erikseen säätänyt connectionstring ominaisuuksia niin ohjelman ja tietokantatiedoston (.mdf) tulee sijaita samassa hakemistossa (oletus) ja SQL Serverin pitää olla käynnissä (service-based database vaatii SQL Serverin).
Kiitos ohjeista. En ole Visual Basic:llä tehnyt paljoa ohjelmaa, Delphillä enemmän.
Voisitko auttaa, miten pystyn tekemään taulukkopohjaisen tietokannan (paikallisen tietokannan)
Kannattaako tehdä Accesilla vai millä?
-Aki
Moi taas Aki_26!
Esim Visual Basic 2010 Express sisältää tietokantojen käsittelyyn niin helppokäyttöiset velhot (Wizards), ettei minua kiinnosta alkaa niiden käyttöä esittelemään tyyliin: valitse siitä ja siitä valikosta se ja se valinta...
Voit käyttää paikallisen tietokannan luomiseen yhtä hyvin Accessia kuin SQL Serveriä. Access-tietokannan käyttö on tietenkin paljon rajoitetumpaa, kuin SQL Server-tietokannan, mutta jos tietokantaa käyttää kerrallaan vain yksi käyttäjä eikä tietokantaan ole tarkoitus tallentaa mitään kovin ihmeellistä dataa niin Access soveltuu tarkoitukseen aivan hyvin.
Laitan tähän yksinkertaisen esimerkin siitä miten voi luoda uuden Access tietokannan, luoda tietokantaan uuden taulun sarakkeineen, lisätä taulukkoon tietueen, tuoda taulukon tiedot datasettiin ja asettaa taulukko datagridview objektin datalähteeksi suoraan koodista.
Imports ADOX 'COM-Referenssi: Microsoft ADO Ext. 2.8 for DDL and Security Imports System Imports System.Data Imports System.Data.OleDb Public Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 'asettaan muuttujan 'dbPath' arvoksi polku siihen kansioon, 'jossa ohjelma sijaitsee fyysisesti ja lisätään tiedostonimi Dim dbPath As String = Application.StartupPath + "\tietokanta.mdb" 'Mikäli muuttujan osoittaman tiedostopolun tiedostoa ei löydy If Dir(dbPath) = String.Empty Then 'Alustetaan uusi ADOOX.Catalog objekti Dim cat As New ADOX.Catalog() 'Luodaan uudsi tyhjä tietokanta cat.Create("Provider=Microsoft.Jet.OLEDB.4.0; " + _ "Data Source=" + dbPath + ";Jet OLEDB:Engine Type=5") 'tuhotaan ADOOX.Catalog objekti cat = Nothing End If 'Alustetaan muuttuja 'connstr' ja asetetaan arvoksi 'Microsoft Access Jet.OLEDB yhteys ja datalähde... Dim connstr As String = _ "PROVIDER=Microsoft.Jet.OLEDB.4.0;" + "Data Source =" + dbPath 'Alustetaan uusi OleDbConnection objekti 'ja asetetaan objektin yhteysmerkkijono Dim conn As OleDbConnection = New OleDbConnection(connstr) 'Alustetaan DataTable objekti Dim testTable As New DataTable 'Asetetaan merkkijonomuuttujan arvo Dim tableName As String = "Testitaulu" Try 'Avataan tietokantayhteys conn.Open() 'haetaan yhteyden SchemaTable objektin 'taulukkotiedot 'testTable' objektiin testTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _ New Object() {Nothing, Nothing, tableName, "TABLE"}) 'Alustetaan tyhjä OleDb komento objekti Dim command As OleDbCommand = Nothing 'Jos testTable objekti ei sisällä yhtään tietokantataulukkoa... If testTable.Rows.Count = 0 Then 'asetetaan kommennon arvoksi taulukon 'luova OleDb komento saraketietoineen command = New OleDbCommand( _ "CREATE TABLE [" + tableName + "]" + _ "([ID] INT IDENTITY(1, 1), " + _ "[Etunimi] TEXT(20) NOT NULL, " + _ "[Sukunimi] TEXT(20) NOT NULL, " + _ "[Osoite] MEMO NOT NULL, " + _ "[Postinumero] TEXT(10) NOT NULL, " + _ "[Postitoimipaikka] TEXT(50) NOT NULL, " + _ "[Puhelin] TEXT(15), " + _ "[Sähköposti] MEMO, " + _ "[Merkinnät] MEMO, " + _ "CONSTRAINT [pk_ID] PRIMARY KEY (ID))", conn) 'esim. 'Suoritetaan komento command.ExecuteNonQuery() End If 'Tuhotaan testi objekti testTable = Nothing 'Asetetaan muuttujan 'query' arvoksi SQL-lause Dim query As String = "SELECT * FROM " + tableName 'Alustetaan uusi DataSet objekti Dim ds As New DataSet 'Asetetaan OleDb datasovittimelle kyselylause ja yheysobjekti Dim da As New OleDbDataAdapter(query, conn) 'lisätään datasovittimen avulla DataSet objektiin 'kyselylauseen osoittama tietokantataulu da.Fill(ds, tableName) 'Jos DataSet objektiin tuotu tietokantataulu ei sisällä tietoa If ds.Tables(tableName).Rows.Count = 0 Then 'Asetetaan uusi OleDb komento command = New OleDbCommand("INSERT INTO [" + tableName + "]" + _ "([Etunimi], [Sukunimi], [Osoite], [Postinumero], " + _ "[Postitoimipaikka], [Puhelin], [Sähköposti], " + _ "[Merkinnät]) VALUES('Matti','Mainio','Matinkatu 1'," + _ "'12121','Kotikaupunki','041-1234567'," + _ "'matti.mainio@kotiposti.fi','Melkoisen viisas mies')", conn) 'esim. 'Suoritetaan komento command.ExecuteNonQuery() 'tuodaan taulukkotiedot uudelleen DataSet objektiin da.Fill(ds, tableName) End If 'Asetetaan DataGridView1 objektin dataläheeksi 'DataSet objektin datataulun tableName tiedot DataGridView1.DataSource = ds.Tables(tableName) 'Suljetaan tietokantayhteys conn.Close() Catch ex As Exception MsgBox(ex.Message) : Exit Sub End Try End Sub End Class
Aihe on jo aika vanha, joten et voi enää vastata siihen.