databáze ve visual basic 2010   otázka

VB.NET, Algoritmy, Databáze

Prosím, můžete mi někdo poradit, potřebuji ve vytvořené databázi přidat položku(záznam) do tabulky. Ať zkouším co zkouším, nic mi nefunguje. Databáze je vytvořena ve visual basicu v Database Explorer. Připojení k databázi a otevření databáze se zdaří.

Nebo pokuď bude někdo od té dobroty a zašle jednoduchý kód na vytvoření databáze, tabulky a přidání záznamu.

Už se v tom plácám dosti dlouho a nějaký takovýto příklad nemůžu nalézt.

Díky moc za každou odpověď.

Imports System.Data.SqlClient


Public Class Form1
    Dim ConnectionString As String = "Server=localhost;Initial Catalog=kamaradi;Trusted_Connection=yes;"
    Dim sqlConnection As New SqlConnection(connectionString)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        sqlConnection.Open() ' pomocí dat z ConnectionStringu spojení otevřeme
        Label1.Text = (String.Format("Verze serveru: {0}", sqlConnection.ServerVersion)) ' zjištění verze serveru
        Label2.Text = (String.Format("Identifikace serveru: {0}", sqlConnection.WorkstationId)) ' a ID počítače na kterém běží
        sqlConnection.Close() ' a zase uzavřeme
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click     
        Dim adapter As SqlDataAdapter = New SqlDataAdapter()
        Dim sql As String
        sql = "INSERT INTO kamaradi (jmeno,prijmeni,bydliste) VALUES ('Martin','Martin','Praha')"
        Try
            sqlConnection.Open()
            adapter.InsertCommand = New SqlCommand(sql, sqlConnection)
            adapter.InsertCommand.ExecuteNonQuery()
            MsgBox("Row inserted !! ")
            sqlConnection.Close()
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
End Class

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jakou vyjímku to hlásí?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

hlásí to toto:

System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'kamaradi'.

at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)

at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)

at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()

at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)

at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)

at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)

at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()

at WindowsApplication1.Form1.Button2_Click(Object sender, EventArgs e) in C:\Users\Martin\documents\visual studio 2010\Projects\SQL databáze\SQL databáze\Form1.vb:line 22

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Buď je chyba v syntaxi SQL příkazu INSERT nebo tabulka kamaradi neexistuje.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tabulka v databázi právě existuje a SQL příkaz by měl být v pořádku. Mám v tom zmatek a nevím právě, jestli nebude chyba někde úplně jinde. Proto bych rád našel někde jednoduchý kód, který databázi s tabulkou vytvoří a pak přidá záznam do tabulky.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkuste to takto:

Using connection As New SqlConnection("Server=localhost;Initial Catalog=kamaradi;Trusted_Connection=yes")
  Using command As New SqlCommand("INSERT INTO kamaradi (jmeno,prijmeni,bydliste) VALUES ('Martin','Martin','Praha')", connection)
    command.ExecuteNonQuery()
  End Using
End Using

Nepoužívejte žádné jiné objekty pro práci s databází, ideálně testujte v novém projektu.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Tak bohužel.

command.ExecuteNonQuery() nahlásí chybu Invalid object name 'kamaradi'.

už opravdu nevím........díky za snahu

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Podívejte se nějakým nástrojem (Server Explorer, Management Studio) jestli tabulka kamaradi skutečně existuje a jestli projde INSERT příkaz.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Tak v Management Studiu jsem nakonec vytvořil novou databázi a zdá se to být již v pořádku. Problém byl zřejmě někde s tou starou databází.

Ještě bych měl jednu otázečku, jak v databázi, která je vytvořena v Management Studiudo do tabulky přidám nový sloupec z prostředí Visual Basicu.

Jinak díky moc za snahu a za ochotu pomoci.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ve vývojovém prostředí nebo za běhu programu?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

za běhu programu

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To svědčí o špatném návrhu nebo nepochopení, jak funguje databáze. Jedině že byste si psal vlastní Server Management Studio nebo aktualizační utilitu databázi.

Typicky se tabulky vytvoří při vývoji aplikace a při spuštění aplikace používá hotovou databázi. Případně ji může při instalaci nebo prvním spuštění vytvořit, třeba spuštěním SQL skriptu, který vygenerujete v Server Management Studiu a který založí potřebné tabulky.

Za běhu se do tabulek jen sypou data, sloupce ani nové tabulky se nepřidávají.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Spíše se jedná o dostatečné nepochopení, jelikož jsem doposud pracoval ve VB6 a s SQL databází jsem úplný začátečník. Ale díky moc za všechny Vaše komentáře a rady.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Za běhu programu se databáze (nebo její části) vytváří jen ve vyjímečných případech. Obvykle se spolu s programem distribuje prázdná databáze nebo SQL skript pro její vytvoření.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback