2009-01-19 7 views
2

Nous essayons de construire un système de billetterie pour le Help Desk juste pour l'intranet. Décider de l'ASP .NET (C#) avec Visual Studio 2008 Express (pensons que nous avons une version complète flottant si nous en avons besoin). Rien d'extraordinaire, quelques pages saisissant des informations NTLM, des informations système et les stockant avec leur problème dans une base de données. L'objectif est de simplifier les choses, mais au lieu d'utiliser notre back-end SQL Server 2000, l'administrateur veut que j'utilise MS Access. J'ai le GridView et les connexions fonctionnent en douceur. Peut tirer des requêtes select jusqu'à ce que mon coeur soit content. Cependant, attacher dans quelques variables avec une zone de texte sur un bouton de soumission dans dire une instruction INSERT .. bien je ne sais même pas par où commencer avec MS Access. Chaque exemple d'Internet est en VB. NET et semble coder à la main ce que Visual Studio a déjà fait pour moi en quelques clics.INSERT d'ASP.NET à MS Access

MS Access va-t-il être trop dur pour tout ce que nous voulons faire? Sinon, où commençons-nous simplement à soumettre ces données dans les tableaux? Editer: Après une série de jeux, nous avons le OleDB en état de marche. Ce n'est pas joli, oui SQL Server serait génial mais, parfois, il suffit de jouer à la balle.

Modifier: Toute personne à la recherche d'une réponse codée réelle, vous y êtes. Il doit y en avoir d'autres dans le même bateau.

string userIP = Request.UserHostAddress.ToString(); 
    string userDNS = Request.UserHostName.ToString(); 
    string duser = Request.ServerVariables["LOGON_USER"]; //NTLM Domain\Username 
    string computer = System.Environment.MachineName.ToString(); //Computer Name 
    string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\helpdesk.MDB;"; 

    OleDbConnection conn = new OleDbConnection(connectionString); 
    conn.Open(); 
    OleDbCommand cmd = new OleDbCommand(); 
    cmd.Connection = conn; 
    cmd.CommandText = "INSERT INTO ticketing ([user], [comp], [issue]) VALUES (@duser, @computer, @col3)"; 
    cmd.Parameters.Add("@duser", OleDbType.VarChar).Value = duser; 
    cmd.Parameters.Add("@computer", OleDbType.VarChar).Value = computer; 
    cmd.Parameters.Add("@col3", OleDbType.LongVarChar).Value = TextBox1.Text; 
    cmd.ExecuteNonQuery(); 
    conn.Close(); 
+0

Pourquoi l'administrateur ne veut-il pas utiliser SQL Server Express Edition, ce qui est gratuit? –

+0

Nous avons SQL Server 2000 Enterprise avec un investissement important dans MS Dynamics. Il s'agit de ne pas changer ce qui fonctionne en ce moment et pas de machines de rechange. –

+0

Ce n'est pas idéal, mais vous pouvez exécuter SQL Express sur le serveur Web si l'obtention d'un autre ordinateur pose problème. – JohnFx

Répondre

2

Je suggère également d'utiliser SQL Server, mais compte tenu de votre problème: Quel est votre problème lors de l'écriture d'une requête INSERT pour Access? Vous devez utiliser des classes que vous trouverez dans l'espace de noms System.Data.OleDb:

  • OleDbConnection
  • OleDbCommand

Quick'n Code sale (non compilé que ce soit):

OleDbConnection conn = new OleDbConnection (connectionString); 

OleDbCommand command = new OleDbCommand(); 
command.Connection = conn; 
command.CommandText= "INSERT INTO myTable (col1, col2) VALUES (@p_col1, @p_col2)"; 
command.Parameters.Add ("@p_col1", OleDbType.String).Value = textBox1.Text; 
... 
command.ExecuteNonQUery(); 

Il y a quelques mises en garde avec les classes OleDb cependant (comme l'ajout des paramètres à la collection dans l'ordre où ils se produisent dans votre STATEM SQL ent, par exemple).

+0

Le problème est que je répare habituellement les problèmes de relais de trame! Merci pour l'exemple. –

5

L'administrateur est fou. Access est une base de données in-process, et en tant que telle n'est pas bien adaptée aux sites Web où les utilisateurs créeront ou mettront à jour des enregistrements.

Mais en ce qui concerne la création de requêtes INSERT, Access n'est pas plus difficile que toute autre chose. Si vous ne pouvez pas créer des requêtes INSERT pour Access, vous aurez probablement des problèmes avec SQL Server.

0

Ne vous embêtez pas avec Access. Utilisez SQL Server Express. Il existe également un outil d'administration qui ressemble à l'outil de gestion complet de SQL Server.

-2

Optez pour SQL Server Express ou MySQL. Les deux sont très faciles à déployer et à gérer. L'accès vous donnera beaucoup de problèmes, car deux utilisateurs accédant à l'application Web en même temps vont planter votre application.

0

L'accès a sa place, et peut généralement faire plus que ce que la plupart des gens lui attribuent, mais oui vous voulez utiliser SQL Server sous une de ses nombreuses formes (par exemple SQL Server Express) ou un autre "serveur" approprié base de données pour une application web comme celle-ci.