c# - System.Data.SqlClient.SqlException:'C# 中的'附近语法不正确
问题描述
我在代码中找不到错误,但它显示给我。
System.Data.SqlClient.SqlException:'附近的语法不正确')
我的代码在这里:
private void ShowChart()
{
string UserID = "";
for (int Counter = 0; Counter < UID.Count - 1; Counter++)
{
UserID += UID[Counter].ToString() + ",";
}
UserID = UserID.Substring(0, UserID.Length);
string[] ListFamily = { };
int[] ListTime = { };
var Query = Database.Database.SqlQuery<Vw_ShowChartInfo>("Select * From Vw_ShowChartInfo Where UserID In (" + UserID + ")").ToList();
for (int I = 0; I < Query.Count; I++)
{
Family.Add(Query[I].FullName.ToString());
Time.Add(Convert.ToInt32(Query[I].TotalTime));
ListFamily = Family.ToArray();
ListTime = Time.ToArray();
}
this.Chart.Series.Clear();
this.Chart.Palette = System.Windows.Forms.DataVisualization.Charting.ChartColorPalette.Pastel;
this.Chart.Titles.Add("نمودار کارکرد پرسنل");
for (int II = 0; II < ListFamily.Length; II++)
{
Series series = this.Chart.Series.Add(ListFamily[II] + "-" + Query[II].TotalTime);
series.Points.Add(ListTime[II]);
}
}
解决方案
我认为你的问题可能是这一行:
UserID = UserID.Substring(0, UserID.Length);
您正在生成的字符串末尾包含一个逗号。看起来您正试图用该行修剪逗号,但您只是再次选择相同的字符串。改用这个:
UserID = UserID.Substring(0, UserID.Length - 1);
此外,假设您的用户 ID 是数字。否则,您需要用单引号将它们括起来。
话虽如此,以这种方式连接字符串是一个糟糕的主意,因为它会使您容易受到 SQL 注入攻击。考虑一种不同的方法。
推荐阅读
- delphi - 如何使用 TClientDataSet 定位包含的字符串
- android - Android ScrollView:如何使用约束布局创建带有静态页眉和页脚的滚动视图
- ruby-on-rails - 如何使用rspec测试rails中的缓存过期?
- jenkins - jq: select 未被识别为内部或外部命令
- ios - 如何修复我的构建:具有 CocoaPods 依赖项和 2 个目标(iOS 和 tvOS)的 .framework 文件
- node.js - 为什么我的 MongoDB 集合返回一个空数组
- discord.js - discord.js 从 fs.readdir 中获取数组
- c# - 检索每个用户对特定谷歌文档所做的更改
- angular - 角度代理配置
- php - 未在 Safari 13 中为基域设置 Laravel 6 会话 cookie