我是 Sublime Text(版本 3)的新手,我在获得正确的 SQL 语法突出显示方面遇到了困难。
每当我查看 SQL 查询时,ST 都会将“#”视为注释。例如,这里超出 # 的所有内容都变灰了:
INSERT INTO #TEST (A,B,C,D)
VALUES ('a','b','c','d')
Run Code Online (Sandbox Code Playgroud)
我想纠正这个问题,所以我环顾四周寻找答案数周,但没有一个有效......
我首先C:\Program Files\Sublime Text 3\Packages查找文件 SQL.sublime-package。
我在评论区找到了这段文字:
- match: "#"
scope: punctuation.definition.comment.sql
push:
- meta_scope: comment.line.number-sign.sql
- match: \n
pop: true
Run Code Online (Sandbox Code Playgroud)
所以我尝试编辑它:
加载语法文件“Packages/SQL/SQL.sublime-syntax”时出错:无法读取 Packages/SQL/SQL.sublime-syntax
您是否有解决方案可以在 Sublime Text 3 中突出显示正确的 SQL 语法?
非常感谢
我目前正在检查 StackOverflow 以获取有关使用 C# 代码防止 SQL 注入的最佳实践,许多答案包括 .NET SQL 类,例如SqlCommand, SqlDataAdapter, ...
问题是我必须使用专有的中间件组件将查询发送到数据库,而且我找不到任何方法来使用这些类而不使用SqlConnection.
这是我的示例代码:
SqlCommand sqlC = new SqlCommand("USP_MyProcedure");
sqlC.CommandType = System.Data.CommandType.StoredProcedure;
sqlC.Parameters.AddWithValue("@strRef", strRef);
sqlC.Parameters.AddWithValue("@strCmd", strCmd);
sqlC.Parameters.AddWithValue("@strParam", strParam);
sqlC.Parameters.AddWithValue("@strDef", strDef);
sqlC.Parameters.AddWithValue("@strWn", sWn);
Run Code Online (Sandbox Code Playgroud)
在SqlCommand似乎正确初始化时,SqlParameterCollection看起来不错,但物业SqlC.CommandText仅返回“USP_MyProcedure”。
如果我使用其他类来处理我的SqlCommand,例如:
SqlDataReader reader = sqlC.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,因为我没有可用的连接:
必须初始化连接属性
所以,我的问题是:
编辑:看起来我误解了这些课程的工作方式。
这些类不会“离线”准备 SQL 语句,而是设计为与 SqlConnection 一起使用。
但我可以改变问题,从另一个角度提出问题:是否有 .NET 类可以“离线”准备 SQL 语句以防止注入?