IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Insertion simple en SQL Server impossible


Sujet :

ASP.NET

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Insertion simple en SQL Server impossible
    Bonjour,

    voila je suis entrain de m'arracher les cheveux sur une insertion ultra simple sur sql serveur 2005 mais qui refuse d'aller. Je vous mets le code avec un select qui lui fonctionne très bien (ma chaine de connexion à mon serveur est donc bonne) et le insert qui foire (Insert que je fais dans une table "Test" qui a une colonne "Test" aussi et qui est un varchar50. J'essaye ici de faire un insert ultra simple avant d'aller plus loin.

    Code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    public class Service : System.Web.Services.WebService
    {
        public String sInsure4CarSrc;
     
        public Service () {
     
            sInsure4CarSrc = "Provider= SQLOLEDB; Data Source=DEV-535FAD5710E\\SQLEXPRESS; " +
                                 "uid=Cygace; pwd=azerty;"; 
        }
     
     
        [WebMethod]
        public string HelloWorld() {
            return "Hello World";
        }
     
        [WebMethod]
        public string Login(string sLogin, string sPassword)
        {
     
            try
            {
                //string sLogin = "Arnaud"; 
                String sSelect = "";
                OleDbConnection oConn;
                OleDbCommand oCom;
                OleDbDataReader oRdr;
     
     
     
                oConn = new OleDbConnection(sInsure4CarSrc);
                oConn.Open();
     
                sSelect = "SELECT Divers FROM Utilisateur WHERE Login = '" + sLogin + "' AND Password = '" + sPassword + "'";
                oCom = new OleDbCommand(sSelect, oConn);
     
                oRdr = oCom.ExecuteReader();
                oRdr.Read();
                string sBDPwd = (string)oRdr[0];
     
                oConn.Close();
                return sBDPwd;
            }
            catch (OleDbException oean)
            {
                throw new Exception(oean.Message);
            }
            catch (Exception exc)
            {
                throw new Exception(exc.Message);
            }
     
     
     
     
     
        }
     
     
        [WebMethod]
        //Fonction qui permet de completer une declaration
        public int setDeclaration3()
        {
     
            SqlConnection conn = new SqlConnection(sInsure4CarSrc);
            //Préparation des paramètres
     
            SqlParameter paramTest = new SqlParameter("@test", SqlDbType.VarChar, 50);
            paramTest.Value = "Ceci est un test";
     
     
            //Préparation de la commande
     
            String sql = string.Format("INSERT INTO Test(Test) VALUES({0})",
     
            paramTest.ParameterName);
     
            SqlCommand cmd = new SqlCommand(sql.ToString(), conn);
     
     
            //Ajout des paramètre à la commande
     
            cmd.Parameters.Add(paramTest);
     
            //Ouverture de la connection et exécution de la commande
     
            conn.Open();
     
            cmd.ExecuteNonQuery();
     
            conn.Close();
     
     
            return 1;
        }




    et voila toujours l"erreur que j'obtiens :

    Stack Trace:


    [SoapException: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.ArgumentException: Keyword not supported: 'provider'.
    at System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey)
    at System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules)
    at System.Data.SqlClient.SqlConnectionString..ctor(String connectionString)
    at System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous)
    at System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(String connectionString, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions)
    at System.Data.SqlClient.SqlConnection.ConnectionString_Set(String value)
    Merci d'avance pour votre avis

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Tu déclare une chaine de connexion OleDb et tu l'utilises ensuite sur une SqlConnection.

    Ça peut pas marcher.

    La forme correcte pour une chaine de connexion Sql est (par exemple) :

    "Data Source=localhost;Initial Catalog=MaBase;Integrated Security=True";

    Dans ta lecture, par contre tu utilises une connexion OleDb; on se demande pourquoi d'ailleurs : il n'y a que des inconvénients à utiliser le provider OleDb pour attaquer une base Sql Server (ou Oracle, ou n'importe quel SGBD disposant d'un provider "natif" sous .Net) : les performances s'en ressentent.

    Donc, mettre la bonne chaine, et virer les OleDb dans la lecture pour les remplacer par des objets du namespace SqlClient.

Discussions similaires

  1. Réponses: 8
    Dernier message: 26/11/2008, 22h25
  2. Réponses: 1
    Dernier message: 23/01/2008, 15h27
  3. Tutorial simple delphi SQL Server
    Par firewire2 dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/11/2005, 23h42
  4. [JDBC] connexion SQL Server impossible
    Par blaiseac dans le forum JDBC
    Réponses: 10
    Dernier message: 27/10/2005, 15h58
  5. Insertion dans table SQL server (Trigger) Aidz moi SVP????
    Par pop bob dans le forum Développement
    Réponses: 2
    Dernier message: 31/07/2005, 00h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo