SQL Server: nom d'objet non valide dans l'exécution de la requête
Je suis en train d'exécuter une instruction Insert, mais reçois un Invalid object name
erreur.
Voici mon code:
public string addNewComment(int userID, int pageID, string title, string comment)
{
string query = "INSERT INTO dbo.nokernok_kommentarer (userID, pageID, commentTitle, comment) " +
"VALUES ("+ userID +", "+ pageID +", '"+ title +"', '"+ comment +"')";
adapter.InsertCommand = new SqlCommand(query, connection);
//ExecuteNonQuery retuens number of rows affected
int numRows = adapter.InsertCommand.ExecuteNonQuery();
return numRows.ToString();
}
Et voici mon message d'erreur:
Système.Les données.SqlClient.SqlException:
Nom d'objet non valide
'dbo.nokernok_kommentarer'. au
Système.Les données.SqlClient.SqlConnection.OnError(SqlException
exception, d'une valeur de type Boolean breakConnection) à
Système.Les données.SqlClient.SqlInternalConnection.OnError(SqlException
exception, d'une valeur de type Boolean breakConnection) à
Système.Les données.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject
stateObj) à
Système.Les données.SqlClient.TdsParser.Exécuter(RunBehavior
runBehavior, SqlCommand cmdHandler,
SqlDataReader dataStream,
BulkCopySimpleResultSet
bulkCopyHandler, TdsParserStateObject
stateObj) à
Système.Les données.SqlClient.SqlCommand.RunExecuteNonQueryTds(String
methodName, Boolean async) à
Système.Les données.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult
résultat, la Chaîne methodName, Boolean
sendToPipe) à
Système.Les données.SqlClient.SqlCommand.ExecuteNonQuery()
au
développement.DAL.nokernokDAL.addNewComment(Int32
userID, Int32 pageID, String titre,
String commentaire)
C:\Inetpub\wwwroot\fnra\DAL\nokernok.cs:ligne
49
Quelqu'un peut-il m'aider à comprendre pourquoi j'ai cette erreur?
Mise à JOUR
Je devrais être à l'aide de la base de données correcte, parce que la requête suivante fonctionne:
public DataSet getSchools(string countyCode)
{
DataSet ds = new DataSet();
string query = "SELECT * FROM nokernok_skoler WHERE kommunekode LIKE '" + countyCode.Substring(0, 2) + "%' ORDER BY enhetsnavn";
adapter.SelectCommand = new SqlCommand(query, connection);
adapter.Fill(ds);
return ds;
}
Ma chaîne de connexion ressemble à ceci:
SqlConnection connection = new SqlConnection();
SqlDataAdapter adapter = new SqlDataAdapter();
//class constructor
public nokernokDAL()
{
connection.ConnectionString = EPiServer.Global.EPConfig["EPsConnection"].ToString();
connection.Open();
}
OriginalL'auteur Steven | 2010-07-22
Vous devez vous connecter pour publier un commentaire.
Vous êtes probablement dans la mauvaise base de données. Inclure un catalogue initial dans votre chaîne de connexion:
Ou spécifier un en trois partie nom:
Ce n'
select SCHEMA_NAME(schema_id) from sys.tables where name = 'nokernok_kommentarer'
retour?Il retourne
dbo
. Uh oh... s'accrocher... test quelque chose ici.Puis le
.dbo.
partie est de droite. Avez-vous essayé d'utiliser les trois nom de la pièce? Pour trouver le nom de base de données utilisationselect DB_NAME()
Je pense que j'ai trouvé le problème. J'ai eu la création de la table dans une base de données ancienne dont je ne suis pas à l'aide de plus. Ainsi, la nouvelle table n'a jamais été dans le bon DB.... :-/
OriginalL'auteur Andomar
Le message d'erreur, il semblerait que la table
dbo.nokernok_kommentarer
n'existe pas dans votre base de données, ou il n'est pas un tableau et n'est donc pas mis à jour.Avez-vous vérifié que:
dbo.
et passomethingElse.
?dbo.nokernok_kommentarer
existe?Si vous copiez le code SQL de votre code et de le lancer dans quelque chose comme SQL Server Management Studio, ça fonctionne sans erreur là?
SELECT
requêtes fonctionne très bien.Dans votre exemple, vous êtes à l'Insertion dans
dbo.nokernok_kommentarer
, mais la Sélection denokernok_skoler
. Pouvez-vous réussi à SÉLECTIONNER à partir de dbo.nokernok_kommentarer?coff.... voir le commentaire ci-dessus
OriginalL'auteur Rob