标签: sqlparameter

过程或函数[sproc_name]需要参数'@materials',这是未提供的

这让我疯了;)

我有这个存储过程...

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',这是未提供的.

当我尝试填充数据集时.在测试时,我已经验证两个参数都包含数据并且不为空.有没有我错过的东西?非常感谢第二双眼睛.

谢谢.

.net c# ado.net sqlconnection sqlparameter

1
推荐指数
1
解决办法
3930
查看次数

SqlCommand如何处理整数类型的参数?

如果我有这个变量:

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();

.net c# sql sqlparameter

1
推荐指数
1
解决办法
2580
查看次数

避免使用tablename查询SQL注入

可能重复:
在.NET中的动态SQL中清理表/列名称?(防止SQL注入攻击)

我有这样的查询:

"SELECT * FROM MyTable_" + myID + " WHERE variable = @variable";
Run Code Online (Sandbox Code Playgroud)

SQL参数化适用于变量,但如何让它与表名一起使用?myID是我传入并更改的int(可以转换为字符串),但是如何防止sql注入?

.net c# sql sql-injection sqlparameter

0
推荐指数
1
解决办法
2678
查看次数

SqlParameter 已包含在另一个 SqlParameterCollection 中

我正在使用 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)

pagedlist entity-framework-4 sqlparameter dbcontext

0
推荐指数
1
解决办法
9454
查看次数

如何设置sql参数

我尝试使用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)

c# mysql database sql-injection sqlparameter

0
推荐指数
1
解决办法
128
查看次数