这让我疯了;)
我有这个存储过程...
ALTER PROCEDURE [dbo].[sproc_FindFoundries]
(@materials varchar(1000),
@capabilities varchar(1000))
AS
BEGIN
/* insert SQL code here */
END
Run Code Online (Sandbox Code Playgroud)
该过程接受两个逗号分隔的字符串.在我的应用程序中,我有以下代码.
BCDataContext db = new BCDataContext();
SqlParameter prmMaterials = new SqlParameter("materials", SqlDbType.VarChar, 1000);
prmMaterials.Value = materialList;
SqlParameter prmCapability = new SqlParameter("capabilities", SqlDbType.VarChar, 1000);
prmCapability.Value = capabilityList;
SqlConnection cn = new SqlConnection(db.Connection.ConnectionString);
SqlCommand cmd = new SqlCommand("sproc_FindFoundries", cn);
cmd.Parameters.Add(prmMaterials);
cmd.Parameters.Add(prmCapability);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
Run Code Online (Sandbox Code Playgroud)
当我执行代码时,我收到错误
过程或函数[sproc_name]需要参数'@materials',这是未提供的.
当我尝试填充数据集时.在测试时,我已经验证两个参数都包含数据并且不为空.有没有我错过的东西?非常感谢第二双眼睛.
谢谢.
如果我有这个变量:
int value = 4;
Run Code Online (Sandbox Code Playgroud)
这将作为一些sql参数传递:
SqlCommand sqlcmd = new SqlCommand();
sqlcmd.Parameters.Add(new SqlParameter("@value", value));
Run Code Online (Sandbox Code Playgroud)
它会被转换为字符串并自动处理吗?或者它可能会导致一些麻烦?即.当我这样做:
sqlcmd.ExecuteNonQuery();
我有这样的查询:
"SELECT * FROM MyTable_" + myID + " WHERE variable = @variable";
Run Code Online (Sandbox Code Playgroud)
SQL参数化适用于变量,但如何让它与表名一起使用?myID是我传入并更改的int(可以转换为字符串),但是如何防止sql注入?
我正在使用 EF DbContext SqlQuery 来使用 PagedList ( https://github.com/TroyGoode/PagedList )获取分页对象列表,但出现以下错误:
“SqlParameter 已包含在另一个 SqlParameterCollection 中”
这是我的存储库代码:
var db = (DbContext)DataContext;
const string sqlString =
@"
WITH UserFollowerList
AS
(
SELECT uf.FollowId
FROM UserFollow uf
WHERE uf.UserId = @UserId
)
SELECT * FROM UserFollowerList uf
INNER JOIN [User] u ON uf.FollowId = u.UserId
WHERE IsDeleted = 0
"
;
var userIdParam = new SqlParameter("UserId", SqlDbType.Int) {Value = userId};
var userList =
db.Database.SqlQuery<User>(sqlString, userIdParam)
.ToPagedList(pageIndex, pageSize);
return userList;
Run Code Online (Sandbox Code Playgroud)
但是当我在 SqlQuery 语句上调用 ToList 扩展时,它工作正常:
var …Run Code Online (Sandbox Code Playgroud) 我尝试使用sql参数的代码,但没有工作,并没有返回任何错误.我该如何解决?
string sql = "SELECT * FROM "+mw.db_name+".ananmez_genel Where hasta_id='@hastaid'";
string connectionString = ConfigurationManager.ConnectionStrings["MYDBConnectionString"].ConnectionString;
using (MySqlConnection connect = new MySqlConnection(connectionString))
{
using (MySqlCommand cmd = new MySqlCommand(sql, connect))
{
connect.Open();
cmd.Parameters.AddWithValue("@hastaid",hasta_id);
MySqlDataReader mdr;
mdr = cmd.ExecuteReader();
if (mdr.Read())
{
for (int i = 0; i < 20; i++)
{
arti = (i + 1).ToString();
kontrol = mdr.GetString("c_" + arti);
if (kontrol == "True")
{
ananmezcheck.ananmez_gnlkontrol(i, check);
}
}
yirmibir.Text = mdr.GetString("txt_1");
}
connect.Close();
}
Run Code Online (Sandbox Code Playgroud)
如果我像这样使用它,它的工作原理:
string sql = "SELECT * …Run Code Online (Sandbox Code Playgroud)