簡體   English   中英

未知錯誤-附近的語法不正確

[英]Unknown Error - Incorrect syntax near

我想知道為什么該類不起作用,但是如果這段代碼是直接在aspx頁面中編寫的,那么它將起作用。 我希望在一個類中使用它,因為在多個頁面中多次調用它來檢查用戶是否已被視為訪問者。 這樣做的主要思想是計算訪問我網站的用戶數量。


錯誤是這樣的: ':'附近的語法不正確

說明:執行當前Web請求期間發生未處理的異常。 請查看堆棧跟蹤,以獲取有關錯誤及其在代碼中起源的更多信息。

異常詳細信息: System.Data.SqlClient.SqlException:':'附近的語法不正確。


這是代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net;
using System.IO;
using System.Data;
using System.Text;

namespace Project
{
    public class ipAddress
    {
        SQL com = new SQL(); //Class to make SQL connection and do querys
        public void GetPublicIP()
        {
            WebClient web = new WebClient();
            System.IO.Stream stream = web.OpenRead(url);
            string text = "";
            using (System.IO.StreamReader reader = new System.IO.StreamReader(stream))
            {
                text = reader.ReadToEnd();
                reader.Close();
            }
            string results = "";
            try
            {
                foreach (DataRow item in com.Execute("select * from table where ip = '" + text + "' and data = '" + DateTime.Now.ToShortDateString() + "';").Rows)
                {
                    results = item["ip"].ToString();
                }
                if (results == "")
                {
                    com.FazerComando("insert into table (ip, date) values ('" + text + "', '" + DateTime.Now.ToShortDateString() + "');");
                }
            }
            catch { }
        }
    }
 }

問候...

好吧,我們不知道這個SQL類是什么,但是看起來您正在將值直接注入SQL中,這是一個非常糟糕的主意 它會引發SQL注入攻擊 ,混合代碼和數據,並使圍繞數字和日期/時間值的轉換比其所需的難度大得多。 (在這種特殊情況下,您很幸運-您正在構建的字符串只是無效的SQL。例如,這並不是清除數據庫。)

相反,您應該使用參數化的SQL ,在該參數中,SQL本身應包含“占位符”,並分別提供值。

假設SQL是您自己的類,則應為它提供使用參數化SQL的便利。 有關示例,請參見SqlCommand.Parameters

您的“文本”變量中帶有撇號(或更糟)。 您基本上是在自我注入SQL數據庫。 非常非常糟糕的棗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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