Avatar billede mr_miyagi Nybegynder
11. september 2006 - 09:22 Der er 4 kommentarer og
1 løsning

problemer med at opdatere en access database

Jeg har lavet en simpel database med fem inputfelter og vil nu smide noget data ind i den, men får flg. problem: Fejl i SQL sætningen.

Hvad gør jeg galt?

Link til test databasen.
http://www.worldweideweb.dk/
Avatar billede mr_miyagi Nybegynder
11. september 2006 - 09:27 #1
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Data" %>
<%@ Page Language="C#" Debug="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    private OleDbConnection conn;
    string connectionString;
    private OleDbCommand command;
    private string sqlStr;
    private OleDbDataAdapter oleDbDataAdapter;
    private OleDbCommandBuilder builder;
    private DataTable dt;

    protected void Page_Load(object sender, EventArgs e)
    {
        connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Server.MapPath("/db/lort.mdb") + "lort.mdb;Jet OLEDB:Database Password=000000;";

        conn = new OleDbConnection(connectionString);
        ReturnDataTable();
    }

    /********************************************************************
    * Fylder et dataset op med en tabel fra databasen op retuner denne *
    * ******************************************************************/
    public void ReturnDataTable()
    {
        dt = new DataTable();
        oleDbDataAdapter = new OleDbDataAdapter("SELECT * FROM Timer", conn);
        oleDbDataAdapter.Fill(dt);

        GridView1.DataSource = dt.DefaultView;
        GridView1.DataBind();
    }
   
        public void UpdateInsertDeleteDatabase(object sender, EventArgs e)
        {
            string error = "";
            try
            {
                //command = new OleDbCommand("INSERT INTO Timer(menuID,OrdreNr,Kommentar,Min) VALUES (2,123456,'bla bla bla',300);", conn);
                command = new OleDbCommand("INSERT INTO Timer(ID2, testNR, kommentar, min) VALUES (123,321, 'bla bla bla bla', 300);", conn);
                command.Connection.Open();
                error = command.ExecuteNonQuery().ToString();
                conn.Close();
                error += " Databasen er opdateret.";
            }
            catch (Exception exc)
            {
                error = "<b>FEJL: </b>" + exc.Message;
            }
            Response.Write(error);
        }
   
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" OnClick="UpdateInsertDeleteDatabase" Text="Button" /><br />
        <br />
        SQL sætning:
        <br />
        INSERT INTO Timer(ID2, testNR, kommentar, min) VALUES (123,321, 'bla bla bla
        bla', 300);<br />
        <br />
        ID = Autonummerering<br />
        ID2 = tal<br />
        testNR = tal<br />
        Kommentar = notat<br />
        min = tal<br />
        <br />
        <asp:GridView ID="GridView1" runat="server">
        </asp:GridView>
    </div>
    </form>
</body>
</html>
Avatar billede mr_miyagi Nybegynder
11. september 2006 - 09:28 #2
ovenstående er koden:

lavede lige en fejl i databaseConnection :
connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Server.MapPath("/db/lort.mdb") + ";Jet OLEDB:Database Password=000000;";
Avatar billede -mundi- Nybegynder
11. september 2006 - 09:33 #3
umiddelbart vil jeg tro det er pga "min" er et reserveret ord, muligvis også "timer" , det kan du løse ved at sætte [] rundt om navnet :

INSERT INTO [Timer](menuID,OrdreNr,Kommentar,[Min]) VALUES (2,123456,'bla bla bla',300);
Avatar billede mr_miyagi Nybegynder
11. september 2006 - 09:39 #4
Doh He he.
Det var sgu det :oD.
Jeg har prøvet alt muligt andet, og har brugt sindsygt langtid på at finde fejlen uden held..
Du får point -munid-
Takker for hjælpen
Avatar billede mr_miyagi Nybegynder
11. september 2006 - 09:58 #5
en lille anden ting.. hvis man skal opdatere via et dataset så man ikke bruger en sql sætning.
hvad kan man så gøre for ikke at få samme fejl, det var faktisk der fejlen startede, da jeg så senere gik over til en sqlsætning i koden.

DataRow newRow = ds.Tables["Timer"].NewRow();
newRow["testID"] = ddlJobType.SelectedIndex;
newRow["testNr"] = int.Parse(lblOrdre.Text);
newRow["Kommentar"] = tbxKommentar.Text;
newRow["Min"] = int.Parse(lblTotalMin.Text);
ds.Tables["Timer"].Rows.Add(newRow);

har prøvet at sætte klammer rundt om Min, men så kan den ikke finde rækken min


public string UpdateDatabaseDataset(DataSet updateDataSet, string table)
{
    string error = "";
        try
    {
        builder  = new OleDbCommandBuilder(oleDbDataAdapter);
        oleDbDataAdapter.Update(updateDataSet, table);
    }
    catch(Exception e)
    {
        error    = e.Message;
    }
    return error;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester