簡體   English   中英

Visual Studio錯誤無法在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, Action
1 wrapCloseInAction) +1767866
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
1 wrapCloseInAction) +1767866
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
1 wrapCloseInAction)+5352418 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,布爾調用者HasConnectionLock,布爾asyncClose)+244

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM