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];
}
}
}