繁体   English   中英

我不断收到错误 System.Data.SqlClient.SqlException: '#' 附近的语法不正确。

[英]I keep getting the error System.Data.SqlClient.SqlException: 'Incorrect syntax near '#'.'

嗨,请帮助我不断收到错误 System.Data.SqlClient.SqlException: '#' 附近的语法不正确。 下面是代码谢谢

private void AddBirthDayToCal(int startDayAtFlNumber)
        {
            var startDate = new DateTime(currentDate.Year, currentDate.Month, 1);
            var endDate = startDate.AddMonths(1).AddDays(-1);
            SqlConnection FamilyMembersConnection;
            FamilyMembersConnection = new SqlConnection("Data Source =.\\SQLEXPRESS; AttachDbFilename = " + Application.StartupPath + "\\MyFamily.mdf; Integrated Security = True; Connect                         Timeout = 30; User Instance = True");
            FamilyMembersConnection.Open();
            FamilyMembersCommand = new SqlCommand($"select * from FamilyMembers where Birthday between #{startDate.ToShortDateString()}# and #{endDate.ToShortDateString()}#", FamilyMembersConnection);
            FamilyMembersAdapter = new SqlDataAdapter();
            FamilyMembersAdapter.SelectCommand = FamilyMembersCommand;
            FamilyMembersTable = new DataTable();
            FamilyMembersAdapter.Fill(FamilyMembersTable);
            foreach (DataRow row in FamilyMembersTable.Rows)
            {
                var BirthDay = DateTime.Parse(Conversions.ToString(row["BirthDay"]));
                var link = new LinkLabel();
                link.Tag = row["FamilyMembersID"];
                link.Name = $"link{row["FamilyMembersID"]}";
                link.Text = Conversions.ToString(row["First_Name"]);
                listFlDay[BirthDay.Day - 1 + (startDayAtFlNumber - 1)].Controls.Add(link);
            }
        }

这是因为您在查询中放入了“#”

FamilyMembersCommand = new SqlCommand($"select * from FamilyMembers where Birthday between #{startDate.ToShortDateString()}# and #{endDate.ToShortDateString()}#", FamilyMembersConnection);

改成这样

FamilyMembersCommand = new SqlCommand($"select * from FamilyMembers where Birthday between '{startDate.ToShortDateString()}' and '{endDate.ToShortDateString()}'", FamilyMembersConnection);

sql 中的# 允许您在当前会话中引用临时对象或过程。 话虽如此,您不应该在查询中需要任何 #。 我假设你想用单引号替换那些,因为你正在做的字符串插值应该解析你传入的属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM