C# SqlHelper 重载方法2个参数问题

图片说明
图片说明
ExecuteDataTable方法没有任何 login.xaml.cs重载采用“2”个参数,怎么更改Helper.cs文件 以上有俩图片,在线等。

public static DataTable ExecuteDataTable(string sql, params SqlParameter[] p)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
foreach (var item in p)
adapter.SelectCommand.Parameters.Add(item);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
return dataset.Tables[0];
}
}
}

在你的executetable后面加上一个参数

还有一个简单讨巧的办法,不要用sqlparamater,直接拼接sql

你要是贴代码,还好帮你改改,你贴图片,难道要回答者照着敲代码么?

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace 用户登录1
{
///
/// MainWindow.xaml 的交互逻辑
///
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

    private void btnboxLogin_Click(object sender, RoutedEventArgs e)
    {
        //防御性编译
        if (txtboxUserName.Text.Length <= 0)
        {
            MessageBox.Show("请输入用户名");
            return;
        }
        if (pwdboxPassword.Password.Length <= 0)
        {
            MessageBox.Show("请输入密码");
            return;
        }
        //输入的用户名数据库中是否存在进行判断
        //执行以下查询,并获得查询结果



        DataTable table = SqlHelper.ExecuteDataTable("select * from T_User where UserName=@UserName",
            new SqlParameter("@UserName",txtboxUserName.Text));
        //查询表是否有该用户
        if (table.Rows.Count <= 0)
        {
            MessageBox.Show("用户不存在");
            return;//提示用户不存在直接返回
        }
        //处理一个不可能发生的情况
        //防御性编程:Assert:断言
        //编程的时候要对“不可能发生的情况”做处理
        if (table.Rows.Count > 1)//如果大于1就证明有两个同名的人,正常数据库是不可能存在两个同名的人
        //不会出现这种情况,或者提示用户名已存在 提示换用户名
        //多重关卡
        {
            throw new Exception("用户重复");
        }
        //唯一的一行
        DataRow row = table.Rows[0];
        //判断 用户输入的密码与数据库中的密码是否一致
        string dbPassword = (string)row["Password"];
        if (dbPassword != pwdboxPassword.Password)
        {
            MessageBox.Show("密码错误");
        }
        else
        {
            MessageBox.Show("登录成功");
        }
    }
}

}

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 用户登录1
{
class SqlHelper
{
private static string connStr = ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString;
//插入、更新
public static int ExecuteNonQuery(string sql)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
return cmd.ExecuteNonQuery();
}
}

    }
    public static object ExecuteScalar(string sql)
    {
        using (SqlConnection conn = new SqlConnection(connStr))
        {
            conn.Open();
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = sql;
                return cmd.ExecuteScalar();
            }
        }
    }
    public static DataTable ExecuteDataTable(string sql)
    {
        using (SqlConnection conn = new SqlConnection(connStr))
        {
            conn.Open();
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = sql;
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                DataSet dataset = new DataSet();
                adapter.Fill(dataset);
                return dataset.Tables[0];
            }
        }
    }
}

}

///
/// 执行指定数据库连接字符串的命令,直接提供参数值,返回DataSet.
///
///
/// 此方法不提供访问存储过程输出参数和返回值.
/// 示例:
/// DataSet ds = ExecuteDataset(connString, "GetOrders", 24, 36);
///
/// 一个有效的数据库连接字符串
/// 存储过程名
/// 分配给存储过程输入参数的对象数组
/// 返回一个包含结果集的DataSet
public static DataSet ExecuteDataset(string connectionString, string spName, params object[] parameterValues)
{
if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString");
if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName");
if ((parameterValues != null) && (parameterValues.Length > 0))
{
// 从缓存中检索存储过程参数
SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spName);
// 给存储过程参数分配值
AssignParameterValues(commandParameters, parameterValues);
return ExecuteDataset(connectionString, CommandType.StoredProcedure, spName, commandParameters);
}
else
{
return ExecuteDataset(connectionString, CommandType.StoredProcedure, spName);
}
}

   /// <summary>
        /// 将一个对象数组分配给SqlParameter参数数组.
        /// </summary>
        /// <param name="commandParameters">要分配值的SqlParameter参数数组</param>
        /// <param name="parameterValues">将要分配给存储过程参数的对象数组</param>
        private static void AssignParameterValues(SqlParameter[] commandParameters, object[] parameterValues)
        {
            if ((commandParameters == null) || (parameterValues == null))
            {
                return;
            }
            // 确保对象数组个数与参数个数匹配,如果不匹配,抛出一个异常.
            if (commandParameters.Length != parameterValues.Length)
            {
                throw new ArgumentException("参数值个数与参数不匹配.");
            }

            // 给参数赋值
            for (int i = 0, j = commandParameters.Length; i < j; i++)
            {
                // If the current array value derives from IDbDataParameter, then assign its Value property
                if (parameterValues[i] is IDbDataParameter)
                {
                    IDbDataParameter paramInstance = (IDbDataParameter)parameterValues[i];
                    if (paramInstance.Value == null)
                    {
                        commandParameters[i].Value = DBNull.Value;
                    }
                    else
                    {
                        commandParameters[i].Value = paramInstance.Value;
                    }
                }
                else if (parameterValues[i] == null)
                {
                    commandParameters[i].Value = DBNull.Value;

                }
                else
                {
                    commandParameters[i].Value = parameterValues[i];
                }
            }
        }

public static DataTable ExecuteDataTable(string sql, params SqlParameter[] p)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;

foreach (var item in p)
cmd.Parameters.Add(item);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
return dataset.Tables[0];
}
}
}