none
INSERT +valeur null RRS feed

  • Question

  • Plop,

     

    me voici après une petite absence (grippe) pour vous poser un nouveau problème :

     

    erreur:

    La valeur ne peut pas être null.
    Nom du paramètre : dataReader

     

    ligne:

    dadVideoCollection.Fill(myDataTable);

     

     

    Il me propose d'utiliser l'objet "new" pour créer une nouvelle instance.

     

    Amicalement

    lundi 14 avril 2008 07:10

Réponses

  •  

    Corrige ça:

    public bool updateAll(string request)

    {

    _dBConn = new MySQLConnection(new MySQLConnectionString(_server, _login, _password, "").AsString);

    MySQLCommand myCommand = new MySQLCommand(request, _dBConn);

    myCommand.Connection.Open();

    myCommand.ExecuteNonQuery();

    _dBConn.Close();

    }

     

    par:

     

    public bool updateAll(string request)

    {

    _dBConn = new MySQLConnection(new MySQLConnectionString(_server, _login, _password, "").AsString);

    MySQLCommand myCommand = new MySQLCommand(request, _dBConn);

    myCommand.Connection.Open();

    myCommand.ExecuteNonQuery();

    _dBConn.Close();

    return true;

    }

     

    Le message d'erreur est assez clair là : UpdateAll doit retourner une valeur Boolean (public bool updateAll(string request))

    Donc tu dois forcement avoir des return.
    lundi 14 avril 2008 12:21

Toutes les réponses

  • Et voila ce qui arrive quand on se fait pas vacciner !!!

     

    Bon tu peux remettre le code complet de la chose ?

     

    Merci

     

    lundi 14 avril 2008 09:17
  • A chaque fois que j'appel un bouton "Ajouter" ou "supprimer2 voici le code de database.cs (la class connection, etc.)

     

     

    public bool SelectArome(String request)

    {

    //Cr‚ation de la commande avec la connextion (attention ConnetDB doit avoir ‚t‚ appel‚!

    _dBConn = new MySQLConnection(new MySQLConnectionString(_server, _login, _password, "").AsString);

    MySQLCommand myCommand = new MySQLCommand(request, _dBConn);

    MySQLDataAdapter dadVideoCollection = new MySQLDataAdapter(myCommand);

    myDataTable = new DataTable("MonDataTable");

    dadVideoCollection.Fill(myDataTable);

    _dBConn.Open();

    _dBConn.Close();

    return true;

    }

     

     

    le bouton:

     

    private void btnSave_Click(object sender, EventArgs e)

    {

    string sStatus = "libre";

    string sName = txtNomArom.Text;

    string sPrice = txtPrix.Text;

    float fPrice = float.Parse(sPrice);

    dataBase mydatabase = new dataBase("localhost", "theproject", "root");

    bool insertArome = mydatabase.SelectArome("INSERT INTO xdb_arom(id, name, price, status) VALUES('', '" +sName+"', '" +fPrice+"', '" + sStatus + "');");

    this.Close();

    }

    lundi 14 avril 2008 09:21
  • Bon déjà on va remettre dans l'ordre:

     

    //Cr‚ation de la commande avec la connextion (attention ConnetDB doit avoir ‚t‚ appel‚!

    _dBConn = new MySQLConnection(new MySQLConnectionString(_server, _login, _password, "").AsString);

    _dBConn.Open();

    MySQLCommand myCommand = new MySQLCommand(request, _dBConn);

    MySQLDataAdapter dadVideoCollection = new MySQLDataAdapter(myCommand);

    myDataTable = new DataTable("MonDataTable");

    dadVideoCollection.Fill(myDataTable);

    _dBConn.Close();

     

    Essaye comme ça.

     

    Petite question: Ceci n'arrive que si tu as des Insert et des delete. Par contre tu n'as pas de problèmes quand tu fait des select ???

     

     

    lundi 14 avril 2008 09:30
  • Plop

     

    ouep, seulement insert et delete

     

    ca fait encore malgrès la correction :]

     

    lundi 14 avril 2008 09:44
  • Bon alors on va fait une petit variation. Je te propose là chose suivante:

    //Cr‚ation de la commande avec la connextion (attention ConnetDB doit avoir ‚t‚ appel‚!

    _dBConn = new MySQLConnection(new MySQLConnectionString(_server, _login, _password, "").AsString);

    MySQLCommand myCommand = new MySQLCommand(request, _dBConn);

    myCommand.Connection.Open()
    myCommand.ExecuteNonQuery()
    myConnection.Close()

     

    Met ce code dans une fonction Update (qui fait donc des insert ou des delete) (par exemple UpdateArome) de ta classe DataBase (database.cs)

     

    private void btnSave_Click(object sender, EventArgs e)

    {

    string sStatus = "libre";

    string sName = txtNomArom.Text;

    string sPrice = txtPrix.Text;

    float fPrice = float.Parse(sPrice);

    dataBase mydatabase = new dataBase("localhost", "theproject", "root");

    bool insertArome = mydatabase.UpdateArome("INSERT INTO xdb_arom(id, name, price, status) VALUES('', '" +sName+"', '" +fPrice+"', '" + sStatus + "');");

    this.Close();

    }

     

    Comme ça tu garde ton selectArome qui te sert quand même pour récupérer des données

     

    Note: tu remarqueras que dans ce cas là myDataTable n'est ni initialisé ni rempli (normal puisqu'on ne cherche pas à obtenir de données mais plutôt à agir dans la base. Si l'on voulait faire les 2 on s'y prendrait autrement mais on verra ça ce jour là).

     

    lundi 14 avril 2008 11:22
  • Voici donc une mise à jour de ma dataBase.cs:

     

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.Data;

    using System.Data.SqlClient;

    using System.IO;

    using MySQLDriverCS;

    namespace TheProject

    {

    class dataBase

    {

    private DataTable _dataTable;

    private MySQLConnection _dBConn;

    public DataTable myDataTable

    {

    get { return _dataTable; }

    set { _dataTable = value; }

    }

    private String _server;

    private String _login;

    private String _password;

    public dataBase()

    {

    }

    public dataBase(String server, String login, String password)

    {

    _server = server;

    _login = login;

    _password = password;

    }

    public bool SelectProduct(String request)

    {

    //Cr‚ation de la commande avec la connextion (attention ConnetDB doit avoir ‚t‚ appel‚!

    _dBConn = new MySQLConnection(new MySQLConnectionString(_server, _login, _password, "").AsString);

    MySQLCommand myCommand = new MySQLCommand(request, _dBConn);

    MySQLDataAdapter dadVideoCollection = new MySQLDataAdapter(myCommand);

    myDataTable = new DataTable("MonDataTable");

    dadVideoCollection.Fill(myDataTable);

    _dBConn.Open();

    _dBConn.Close();

    //DataColumn col = new DataColumn("Supprimer", System.Type.GetType("System.Boolean"));

    //col.DefaultValue = false;

    //myDataTable.Columns.Add(col);

    return true;

    }

    public bool SelectRecette(String request)

    {

    //Cr‚ation de la commande avec la connextion (attention ConnetDB doit avoir ‚t‚ appel‚!

    _dBConn = new MySQLConnection(new MySQLConnectionString(_server, _login, _password, "").AsString);

    MySQLCommand myCommand = new MySQLCommand(request, _dBConn);

    MySQLDataAdapter dadVideoCollection = new MySQLDataAdapter(myCommand);

    myDataTable = new DataTable("MonDataTable");

    dadVideoCollection.Fill(myDataTable);

    _dBConn.Open();

    _dBConn.Close();

    return true;

    }

    public bool SelectArome(String request)

    {

    //Cr‚ation de la commande avec la connextion (attention ConnetDB doit avoir ‚t‚ appel‚!

    _dBConn = new MySQLConnection(new MySQLConnectionString(_server, _login, _password, "").AsString);

    _dBConn.Open();

    MySQLCommand myCommand = new MySQLCommand(request, _dBConn);

    MySQLDataAdapter dadVideoCollection = new MySQLDataAdapter(myCommand);

    myDataTable = new DataTable("MonDataTable");

    dadVideoCollection.Fill(myDataTable);

    _dBConn.Close();

    return true;

    }

    public bool updateAll(string request)

    {

    _dBConn = new MySQLConnection(new MySQLConnectionString(_server, _login, _password, "").AsString);

    MySQLCommand myCommand = new MySQLCommand(request, _dBConn);

    myCommand.Connection.Open();

    myCommand.ExecuteNonQuery();

    _dBConn.Close();

    }

    }

    }

     

     

    Voici les erreurs:

     

    Erreur 1 'TheProject.dataBase.updateAll(string)' : tous les chemins de code ne retournent pas nécessairement une valeur.

    ligne:

    updateAll

     

     

    Meilleures salutations !

    lundi 14 avril 2008 12:05
  •  

    Corrige ça:

    public bool updateAll(string request)

    {

    _dBConn = new MySQLConnection(new MySQLConnectionString(_server, _login, _password, "").AsString);

    MySQLCommand myCommand = new MySQLCommand(request, _dBConn);

    myCommand.Connection.Open();

    myCommand.ExecuteNonQuery();

    _dBConn.Close();

    }

     

    par:

     

    public bool updateAll(string request)

    {

    _dBConn = new MySQLConnection(new MySQLConnectionString(_server, _login, _password, "").AsString);

    MySQLCommand myCommand = new MySQLCommand(request, _dBConn);

    myCommand.Connection.Open();

    myCommand.ExecuteNonQuery();

    _dBConn.Close();

    return true;

    }

     

    Le message d'erreur est assez clair là : UpdateAll doit retourner une valeur Boolean (public bool updateAll(string request))

    Donc tu dois forcement avoir des return.
    lundi 14 avril 2008 12:21
  • Plop !

     

    Merci, ca fonctionne.

     

    L'idéal serait maintenant que le datagridview de la form 1 se mette a jour lorsque l on click sur le btnSave de la form2. Il me semble qu on a deja vu ca mais c'est pas sur le meme pc :/

     

    lundi 14 avril 2008 12:48