![](/img/trans.png)
[英]Error in Visual Studio: Cannot implicitly convert type 'string' to 'int'
[英]Visual Studio error cannot call method on int
只是試圖將一些簡單的數據插入表中,但是每次嘗試時,都會出現錯誤“無法在int上調用方法”。 這是我的代碼,感謝表中的任何幫助數據類型對於Cinema Id為int,對於ReviewText為nvarchar(50)
protected void BtnSubmitReview_Click(object sender, EventArgs e)
{
try
{
System.Data.SqlClient.SqlConnection sqlConnection1 = new System.Data.SqlClient.SqlConnection("RegistrationConnectionString");
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "INSERT INTO ReviewText (ReviewText.CinemaID, ReviewText.ReviewText) VALUES (1, 'NorthWestern')";
cmd.Connection = sqlConnection1;
sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();
Response.Write("Your Review was saved");
}
catch (Exception ex)
{
Response.Write("Error" + ex.ToString());
}
顯示的錯誤:
無法在int上調用方法。
描述:
當前Web請求的執行期間發生未處理的異常。 請查看堆棧跟蹤,以獲取有關錯誤及其在代碼中起源的更多信息。
異常詳細信息:
System.Data.SqlClient.SqlException:無法在int上調用方法。
源錯誤:
當前Web請求的執行期間生成了未處理的異常。 可以使用下面的異常堆棧跟蹤來標識有關異常的來源和位置的信息。
堆棧跟蹤:
[SqlException(0x80131904):無法在int上調用方法。
System.Data.SqlClient.SqlConnection.OnError(SqlException異常,布爾值breakConnection,操作1 wrapCloseInAction) +1767866
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) +1767866
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) +1767866
1 wrapCloseInAction)+5352418 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,布爾調用者HasConnectionLock,布爾asyncClose)+244
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,Boolean和dataReady)+1691
System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()+61
System.Data.SqlClient.SqlDataReader.get_MetaData()+90
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,字符串resetOptionsString)+365
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,Boolean異步,Int32超時,Task&task,Boolean asyncWrite,SqlDataReader ds)+1406
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String方法,TaskCompletionSource`1完成,Int32超時,Task&task,布爾asyncWrite)+177
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String方法)+53
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior行為,字符串方法)+134
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior行為)+41
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior行為)+10 System.Data.Common.DbDataAdapter.FillInternal(DataSet數據集,DataTable []數據表,Int32 startRecord,Int32 maxRecords,字符串srcTable,IDbCommand命令,CommandBehavior行為)+140
System.Data.Common.DbDataAdapter.Fill(數據集dataSet,Int32 startRecord,Int32 maxRecords,字符串srcTable,IDbCommand命令,CommandBehavior行為)+316
您不需要使用表名來限定INSERT
語句中的列名。 使用它作為您的SQL:
INSERT INTO ReviewText (CinemaID, ReviewText) VALUES (1, 'NorthWestern')
另外,如果要在application / web.config中查找連接字符串,則不能僅將鍵放在SqlConnection
構造函數中以獲取實際的連接字符串。 您必須使用ConfigurationManager
類來獲取值,看起來像這樣:
var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString);
您的代碼有問題,我不知道此問題是否是您異常的根源,請首先對其進行編輯,然后告訴我們結果:
//you dont need to repeat table name in insert command's columns
cmd.CommandText = "INSERT INTO ReviewText (CinemaID, ReviewText) VALUES (1, 'NorthWestern')";
也強烈建議通過這種方式使用SqlConnection:
using(System.Data.SqlClient.SqlConnection sqlConnection1 = new System.Data.SqlClient.SqlConnection("RegistrationConnectionString"))
{
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "INSERT INTO ReviewText (CinemaID, ReviewText) VALUES (1, 'NorthWestern')";
cmd.Connection = sqlConnection1;
sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.