2010-05-26 10 views
0

J'utilise C# .Net et Sql Server (application Windows). J'avais créé une table temporaire. Lorsqu'un bouton est cliqué, une table temporaire (#tmp_emp_answer) est créée. J'ai un autre bouton appelé "insérer des valeurs" et aussi 5 zones de texte. Les valeurs entrées dans la zone de texte sont utilisées et chaque fois que com.ExecuteNonQuery(); ligne vient, il jette un message d'erreur Nom d'objet invalide '#tbl_emp_answer' .. Ci-dessous l'ensemble du code .. S'il vous plaît donnez-moi une solution. Code deJe veux une requête d'insertion pour une table temporaire

pour l'insertion (dans le bouton de valeur d'insertion):

private void btninsertvalues_Click(object sender, EventArgs e) 
{ 
    username = txtusername.Text; 
    examloginid = txtexamloginid.Text; 
    question = txtquestion.Text; 
    answer = txtanswer.Text; 
    useranswer = txtanswer.Text; 
    SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=tempdb;Integrated Security=True;"); 
    SqlCommand com = new SqlCommand("Insert into #tbl_emp_answer values('"+username+"','"+examloginid+"','"+question+"','"+answer+"','"+useranswer+"')", con); 
    con.Open(); 
    com.ExecuteNonQuery(); 
    con.Close(); 
} 
+0

S'il vous plaît insérer votre code dans une section de code et ajouter le code pour la création de la table –

Répondre

7

Les tables temporaires n'existent que dans le contexte de et pour la durée de la connexion en cours, votre connexion n'a qu'une commande d'insertion, vous ne créez pas de table temporaire, la table temporaire que vous essayez d'insérer n'existe pas. Même si vous en créiez un dans le cadre de la même requête qui insérait les valeurs, il serait supprimé dès la fermeture de la connexion. Si vous voulez qu'une table persiste entre les connexions, vous devez créer une table normale, insérez les valeurs, puis déposez-la plus tard lorsque vous avez terminé.

+0

En fait, j'ai créé la table temporaire.Un bouton appelé "Créer" a pour fonction de créer une table temporaire. –

+2

Oui, mais les tables temporaires sont automatiquement supprimées lorsque la connexion est fermée et, même lorsque la connexion est active, elles n'existent que pour cette connexion. Vous ne pouvez pas créer une table temporaire avec une connexion, puis y accéder avec une autre connexion. Le seul inconvénient est que vous pouvez créer des tables temporaires globales en préfixant votre nom de table aveC## au lieu de #, les tables temporaires globales peuvent être accédées par d'autres sessions mais elles sont quand même abandonnées quand toutes les connexions qui les ont référencées sont fermées. –

+0

merci beaucoup ... son fonctionnement bien .. –

1

vous devez déclarer une table temporaire avant de l'utiliser. Donc déclarez-le d'abord, puis insérez des valeurs dans celui-ci.

+0

comment déclarer? s'il vous plaît me donner la syntaxe .. merci .. –

+0

CREATE TABLE #tableName ( col1 int, col2 char (30)) Plus important de comprendre ce que Ben Robinson dit, table temporaire existe pensée exécution de la requête, que ce moyen Même si vous créez une table temporaire et y insérez des valeurs, elle existera dans la mémoire jusqu'à la fin de la requête, puis disparaîtra pour que vous ne puissiez plus en sélectionner. Si vous souhaitez utiliser vos données insérées à l'avenir créer une table régulière et le remplir avec des données – eugeneK

+0

autre chose, votre requête sql est largement ouverte pour les attaques par injection SQL, s'il vous plaît lire sur SqlCommand.Parameters avant que quelqu'un vous «subquery». – eugeneK

Questions connexes