using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;namespace 项目1
{
class SqlHelper
{
private static string connStr = ConfigurationManager.ConnectionStrings["dbconnStr"].ConnectionString;
public static int ExecuteNonQuery(string sql,params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteNonQuery();
}
}
} public static object ExecuteScalar(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteScalar();
}
}
} //只用来执行查询结果比较少的sql
public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{ cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters); SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
return dataset.Tables[0];
}
}
}
}
}其中使用了配置文件存放访问数据库地址,这个是存放连接过程的类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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.Shapes;
using System.Data;
using System.Data.SqlClient;namespace 项目1
{
/// <summary>
/// loginWindow.xaml 的交互逻辑
/// </summary>
public partial class loginWindow : Window
{
public loginWindow()
{
InitializeComponent();
} private void button1_Click(object sender, RoutedEventArgs e)
{
DataTable table = SqlHelper.ExecuteDataTable("select * from loginTable where UserName=@UserName",new SqlParameter("@UserName",txtbUserName.Text));
//编程的时候要对“不可能发生的情况”做处理
if (table.Rows.Count<=0)
{
MessageBox.Show("用户不存在!");
return;
}
//防御性编程:Assert:断言
if (table.Rows.Count > 1)
{
throw new Exception("用户名重复");
}
DataRow row=table.Rows[0];
string dbPassword=(string)row["PassWord"];
if (dbPassword != pwdUserPass.Password)
{
MessageBox.Show("密码错误"); }
else
{
MessageBox.Show("登录成功!");
} }
}
}这个是登录界面的代码
这个是错误的截图。谢谢帮助 感激不尽~2~
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;namespace 项目1
{
class SqlHelper
{
private static string connStr = ConfigurationManager.ConnectionStrings["dbconnStr"].ConnectionString;
public static int ExecuteNonQuery(string sql,params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteNonQuery();
}
}
} public static object ExecuteScalar(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteScalar();
}
}
} //只用来执行查询结果比较少的sql
public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{ cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters); SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
return dataset.Tables[0];
}
}
}
}
}其中使用了配置文件存放访问数据库地址,这个是存放连接过程的类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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.Shapes;
using System.Data;
using System.Data.SqlClient;namespace 项目1
{
/// <summary>
/// loginWindow.xaml 的交互逻辑
/// </summary>
public partial class loginWindow : Window
{
public loginWindow()
{
InitializeComponent();
} private void button1_Click(object sender, RoutedEventArgs e)
{
DataTable table = SqlHelper.ExecuteDataTable("select * from loginTable where UserName=@UserName",new SqlParameter("@UserName",txtbUserName.Text));
//编程的时候要对“不可能发生的情况”做处理
if (table.Rows.Count<=0)
{
MessageBox.Show("用户不存在!");
return;
}
//防御性编程:Assert:断言
if (table.Rows.Count > 1)
{
throw new Exception("用户名重复");
}
DataRow row=table.Rows[0];
string dbPassword=(string)row["PassWord"];
if (dbPassword != pwdUserPass.Password)
{
MessageBox.Show("密码错误"); }
else
{
MessageBox.Show("登录成功!");
} }
}
}这个是登录界面的代码
这个是错误的截图。谢谢帮助 感激不尽~2~
解决方案 »
- 初学c#,使用ole db出现的问题,问题的结果是并非所有的代码都有返回值,请大家帮忙
- 对属性里边的value的理解
- 周期提醒中的周期时间如何保存?
- 从设计的角度上说明静态函数,静态类和非静态函数,非静态类的区别
- 问题可能出在那里,请大大们指教
- 如何使两个窗体进行同步移动(100分全部奉送)
- Console下的程序,是不是只有.cs文件有用,其它都可删除?(刚学的时候都用记事本的)
- 在开发播放MP3软件时,如何显示音乐电平?请高手指教!
- 请高手解决一下这个问题:
- “System.Web.UI.WebControls.DataGrid”并不包含“TestCommand”的定义
- C# 高速数据的实时 接收\解析\存储 问题
- 字符串排序操作
去掉这行。另外你判断用户名密码是否正确 不要使用 ExecuteDataTable
使用ExecuteScalar方法就可以了
select * from loginTable where UserName=@UserName and PassWord=@PassWord
如果返回值大于0就是登录成功
换成 System.Configuration.ConfigurationManager.ConnectionStrings["str"].ToString();
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;using System.Diagnostics;namespace DataAccess
{
/// <summary>
/// </summary>
class BaseDb
{
/// <summary>
/// 连接字符串
/// </summary>
public static string strCon = System.Configuration.ConfigurationManager.ConnectionStrings["NSdpWebConnectionString"].ToString();
/// <summary>
/// 查询 -- 执行存储过程返回数据集
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <param name="tableName">DataSet结果中的表名</param>
/// <returns>DataSet</returns>
public static DataSet RunProcedureForQuery(string storedProcName, IDataParameter[] parameters)
{
using (SqlConnection connection = new SqlConnection(strCon))
{
DataSet dataSet = new DataSet();
try
{
connection.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
sqlDA.Fill(dataSet);
connection.Close();
return dataSet;
}
catch(Exception ex)
{
//返回为空时代表数据库访问出现异常,界面调用方根据返回信息给用友户好提示。
Debug.Print(ex.ToString());
return null;
}
}
} public static DataSet RunSQLForQuery(string sql)
{
using (SqlConnection connection = new SqlConnection(strCon))
{
DataSet dataSet = new DataSet();
try
{
connection.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = new SqlCommand(sql, connection);
sqlDA.Fill(dataSet);
connection.Close();
return dataSet;
}
catch (Exception ex)
{
//返回为空时代表数据库访问出现异常,界面调用方根据返回信息给用户友好提示。
Debug.Print(ex.ToString());
return null;
}
}
} //只需要进行操作不需要返回
public static void RunSQLForNoQuery(string sql)
{
using (SqlConnection connection = new SqlConnection(strCon))
{
try
{
connection.Open();
SqlCommand sc = new SqlCommand(sql,connection);
sc.ExecuteNonQuery();
connection.Close();
}
catch (Exception ex)
{
//返回为空时代表数据库访问出现异常,界面调用方根据返回信息给用户友好提示。
Debug.Print(ex.ToString());
}
}
} /// <summary>
/// 更新--执行存储过程,返回影响的行数
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns></returns>
public static int RunProcedureForUpdate(string storedProcName, IDataParameter[] parameters)
{
using (SqlConnection connection = new SqlConnection(strCon))
{
int rowsAffected = 0;
try
{
connection.Open();
SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
rowsAffected = command.ExecuteNonQuery();
}
catch (Exception ex)
{
Debug.Print(ex.ToString());
}
return rowsAffected;
}
} /// <summary>
/// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
/// </summary>
/// <param name="connection">数据库连接</param>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>SqlCommand</returns>
private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
{
SqlCommand command = new SqlCommand(storedProcName, connection);
command.CommandType = CommandType.StoredProcedure;
if (parameters != null)
{
foreach (SqlParameter parameter in parameters)
{
command.Parameters.Add(parameter);
}
}
return command;
} internal DataSet UserLogin(string strManagerName, string strManagerPWD)
{
throw new NotImplementedException();
}
}
}
呀
即 private static string connStr ..... 返回的信息 是否正确