using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient;namespace WindowsFormsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); string cstring = "Data Source=PC-201109192112;Initial Catalog=student;Integrated Security=True"; using (SqlConnection con=new SqlConnection(cstring)) { if (textBox1.Text == "") { MessageBox.Show("请输入用户名"); return; } if (textBox2.Text == "") { MessageBox.Show("请输入用户密码"); return; } con.Open(); using (SqlCommand com = new SqlCommand("select count(*) from mima where zh=" + textBox1.Text + " and mm=" + textBox2.Text + " ", con)) { //com.CommandType = CommandType.StoredProcedure // int mi=(int)com.ExecuteScalar(); if ((int)com.ExecuteScalar() == 1) { form2.ShowDialog(); // this.Hide(); } else { MessageBox.Show("用户名或密码无效,请重新输入"); textBox1.Text = null; textBox2.Text = null; } } } }看看呀 哪里错了
Data Source=PC-201109192112;Initial Catalog=student;Integrated Security=True new SqlCommand("select count(*) from mima where zh=‘" + textBox1.Text + "’ and mm=‘" + textBox2.Text + "’", con)连接服务器是本机,计算机名是PC-201109192112,连接数据库是student,要在这个数据库中建一张mima表,至少包括zh,mm两个字段。SQL语句中少写了单引号,因为数据库中是字符型的,要用引号引起来(SQL语句中用单引号)。
是你原来代码里的。。其他的逻辑判断我没细看,就看了看连接字符串和SQL语句。
通常新建一个config配置文件用来保存数据库连接字符串 <?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="DB" connectionString="server=.;database=ATMDB;uid=sa;pwd=123456"/> </connectionStrings> </configuration> 然后再建一个专门用来连接数据库的类DBHelperusing System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Configuration; using System.Data; namespace Dals { public class DBHelper { public string connstr = ConfigurationManager.ConnectionStrings["db1"].ConnectionString; private SqlConnection _conn; public SqlConnection Conn { get { if (_conn == null) _conn = new SqlConnection(connstr); return _conn; } } /// <summary> /// 封装增删改操作代码 /// </summary> /// <param name="sql">要执行的SQL语句或者存储过程名称</param> /// <param name="type">命令类型</param> /// <param name="paras">参数数组</param> /// <returns></returns> public bool ExecuteNonQuery(string sql, CommandType type, params SqlParameter[] paras) { int result = 0; try { SqlCommand cmd = new SqlCommand(sql, Conn); cmd.CommandType = type; //判断是否存在参数 if (paras != null && paras.Length > 0) cmd.Parameters.AddRange(paras); Conn.Open(); result = cmd.ExecuteNonQuery(); } catch { } finally { Conn.Close(); } return result > 0 ? true : false; } /// <summary> /// 返回单行单列 /// </summary> /// <param name="sql">要执行的SQL语句或者存储过程名称</param> /// <param name="type">命令类型</param> /// <param name="paras">参数数组</param> /// <returns></returns> public object ExecuteScale(string sql, CommandType type, params SqlParameter[] paras) { object result = null; try { SqlCommand cmd = new SqlCommand(sql, Conn); cmd.CommandType = type; //判断是否存在参数 if (paras != null && paras.Length > 0) cmd.Parameters.AddRange(paras); Conn.Open(); result = cmd.ExecuteScalar(); } catch { } finally { Conn.Close(); } return result; } /// <summary> /// 返回DataReader,需要注意,获取完数据后,必须关闭DataReader对象 /// </summary> /// <param name="sql">要执行的SQL语句或者存储过程名称</param> /// <param name="type">命令类型</param> /// <param name="paras">参数数组</param> /// <returns></returns> public SqlDataReader ExecuteDataReader(string sql, CommandType type, params SqlParameter[] paras) { SqlDataReader read = null; try { SqlCommand cmd = new SqlCommand(sql, Conn); cmd.CommandType = type; //判断是否存在参数 if (paras != null && paras.Length > 0) cmd.Parameters.AddRange(paras); Conn.Open(); //CommandBehavior.CloseConnection:关闭DataReader对象时,自动关闭相应的连接池对象 read = cmd.ExecuteReader(CommandBehavior.CloseConnection); } catch { } return read; } /// <summary> /// 返回DataSet /// </summary> /// <param name="sql">要执行的SQL语句或者存储过程名称</param> /// <param name="type">命令类型</param> /// <param name="paras">参数数组</param> /// <returns></returns> public DataSet ExecuteDataSet(string sql, CommandType type, params SqlParameter[] paras) { DataSet ds = new DataSet(); try { SqlCommand cmd = new SqlCommand(sql, Conn); cmd.CommandType = type; //判断是否存在参数 if (paras != null && paras.Length > 0) cmd.Parameters.AddRange(paras); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds); } catch { } return ds; } /// <summary> /// 封装带事务的增删改操作代码 /// </summary> /// <returns></returns> public bool ExecuteNonQuery(string sql, SqlConnection tranconn, SqlTransaction tran, CommandType type, params SqlParameter[] paras) { int result = 0; try { SqlCommand cmd = new SqlCommand(sql, tranconn); cmd.Transaction = tran; cmd.CommandType = type; //判断是否存在参数 if (paras != null && paras.Length > 0) cmd.Parameters.AddRange(paras); result = cmd.ExecuteNonQuery(); } catch { } return result > 0 ? true : false; } } } 然后在登录的时候调用ExecuteNonQuery方法 String sql="select count(*) from mima where zh=‘" + textBox1.Text + "’ and mm=‘" + textBox2.Text + "’"; if(ExecuteNonQuery(sql, CommandType.Text)){ MessageBox.Show("登录成功!"); }else{ MessageBox.Show("登录失败"); } //这是我通常的用法,一般都是用三层架构的,不过在这里简化了
附上我做的程序的OK按键事件代码: 按OK键后取name和password,然后建立连接,再设SQL语句,查询取值,有结果则打开下一窗口 private void btOK_Click(object sender, EventArgs e) { //Get Username and Password from text box input string clientName = txUserName.Text.Trim(); clientPassword = txPWD.Text.Trim(); //Start SQL Connection try { //SQL connection parameter string strConn = "server = 228.66.48.222,1433;user id =" + strUserName + ";PWD =" + strPWD + ";Database = Files"; SqlConnection sc = new SqlConnection();//create SQL connection object sc.ConnectionString = strConn; sc.Open();//Open connection //To store SQL Select command string tempCommand = "select * from CUTool where UserName='"+clientName+"' and Password='"+clientPassword+"'"; SqlCommand sd = new SqlCommand(tempCommand,sc); SqlDataReader sdr = sd.ExecuteReader(); if (sdr.Read()) { frm.Close(); //open second form "MainTool" MainTool mainfrm = new MainTool(); mainfrm.StartPosition = FormStartPosition.CenterScreen; mainfrm.ShowDialog(); //this.Hide(); sc.Close(); } else { sc.Close(); MessageBox.Show("Invalid username/password combination."); }
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2(); string cstring = "Data Source=PC-201109192112;Initial Catalog=student;Integrated Security=True";
using (SqlConnection con=new SqlConnection(cstring))
{
if (textBox1.Text == "")
{
MessageBox.Show("请输入用户名");
return;
}
if (textBox2.Text == "")
{
MessageBox.Show("请输入用户密码");
return;
} con.Open(); using (SqlCommand com = new SqlCommand("select count(*) from mima where zh=" + textBox1.Text + " and mm=" + textBox2.Text + " ", con))
{
//com.CommandType = CommandType.StoredProcedure
// int mi=(int)com.ExecuteScalar();
if ((int)com.ExecuteScalar() == 1)
{
form2.ShowDialog();
// this.Hide(); }
else
{
MessageBox.Show("用户名或密码无效,请重新输入");
textBox1.Text = null;
textBox2.Text = null;
}
}
}
}看看呀 哪里错了
new SqlCommand("select count(*) from mima where zh=‘" + textBox1.Text + "’ and mm=‘" + textBox2.Text + "’", con)连接服务器是本机,计算机名是PC-201109192112,连接数据库是student,要在这个数据库中建一张mima表,至少包括zh,mm两个字段。SQL语句中少写了单引号,因为数据库中是字符型的,要用引号引起来(SQL语句中用单引号)。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="DB" connectionString="server=.;database=ATMDB;uid=sa;pwd=123456"/>
</connectionStrings>
</configuration>
然后再建一个专门用来连接数据库的类DBHelperusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
namespace Dals
{
public class DBHelper
{
public string connstr = ConfigurationManager.ConnectionStrings["db1"].ConnectionString;
private SqlConnection _conn;
public SqlConnection Conn
{
get
{
if (_conn == null)
_conn = new SqlConnection(connstr);
return _conn;
}
}
/// <summary>
/// 封装增删改操作代码
/// </summary>
/// <param name="sql">要执行的SQL语句或者存储过程名称</param>
/// <param name="type">命令类型</param>
/// <param name="paras">参数数组</param>
/// <returns></returns>
public bool ExecuteNonQuery(string sql, CommandType type, params SqlParameter[] paras)
{
int result = 0;
try
{
SqlCommand cmd = new SqlCommand(sql, Conn);
cmd.CommandType = type;
//判断是否存在参数
if (paras != null && paras.Length > 0)
cmd.Parameters.AddRange(paras); Conn.Open();
result = cmd.ExecuteNonQuery();
}
catch
{ }
finally
{
Conn.Close();
}
return result > 0 ? true : false;
}
/// <summary>
/// 返回单行单列
/// </summary>
/// <param name="sql">要执行的SQL语句或者存储过程名称</param>
/// <param name="type">命令类型</param>
/// <param name="paras">参数数组</param>
/// <returns></returns>
public object ExecuteScale(string sql, CommandType type, params SqlParameter[] paras)
{
object result = null;
try
{
SqlCommand cmd = new SqlCommand(sql, Conn);
cmd.CommandType = type;
//判断是否存在参数
if (paras != null && paras.Length > 0)
cmd.Parameters.AddRange(paras);
Conn.Open();
result = cmd.ExecuteScalar();
}
catch { }
finally
{
Conn.Close();
}
return result;
}
/// <summary>
/// 返回DataReader,需要注意,获取完数据后,必须关闭DataReader对象
/// </summary>
/// <param name="sql">要执行的SQL语句或者存储过程名称</param>
/// <param name="type">命令类型</param>
/// <param name="paras">参数数组</param>
/// <returns></returns>
public SqlDataReader ExecuteDataReader(string sql, CommandType type, params SqlParameter[] paras)
{
SqlDataReader read = null;
try
{
SqlCommand cmd = new SqlCommand(sql, Conn);
cmd.CommandType = type;
//判断是否存在参数
if (paras != null && paras.Length > 0)
cmd.Parameters.AddRange(paras);
Conn.Open();
//CommandBehavior.CloseConnection:关闭DataReader对象时,自动关闭相应的连接池对象
read = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch
{ }
return read;
}
/// <summary>
/// 返回DataSet
/// </summary>
/// <param name="sql">要执行的SQL语句或者存储过程名称</param>
/// <param name="type">命令类型</param>
/// <param name="paras">参数数组</param>
/// <returns></returns>
public DataSet ExecuteDataSet(string sql, CommandType type, params SqlParameter[] paras)
{
DataSet ds = new DataSet();
try
{
SqlCommand cmd = new SqlCommand(sql, Conn);
cmd.CommandType = type;
//判断是否存在参数
if (paras != null && paras.Length > 0)
cmd.Parameters.AddRange(paras);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
}
catch { }
return ds;
}
/// <summary>
/// 封装带事务的增删改操作代码
/// </summary>
/// <returns></returns>
public bool ExecuteNonQuery(string sql, SqlConnection tranconn, SqlTransaction tran, CommandType type, params SqlParameter[] paras)
{
int result = 0;
try
{
SqlCommand cmd = new SqlCommand(sql, tranconn);
cmd.Transaction = tran;
cmd.CommandType = type;
//判断是否存在参数
if (paras != null && paras.Length > 0)
cmd.Parameters.AddRange(paras); result = cmd.ExecuteNonQuery();
}
catch
{ }
return result > 0 ? true : false;
}
}
}
然后在登录的时候调用ExecuteNonQuery方法
String sql="select count(*) from mima where zh=‘" + textBox1.Text + "’ and mm=‘" + textBox2.Text + "’";
if(ExecuteNonQuery(sql, CommandType.Text)){
MessageBox.Show("登录成功!");
}else{
MessageBox.Show("登录失败");
}
//这是我通常的用法,一般都是用三层架构的,不过在这里简化了
按OK键后取name和password,然后建立连接,再设SQL语句,查询取值,有结果则打开下一窗口
private void btOK_Click(object sender, EventArgs e)
{
//Get Username and Password from text box input string
clientName = txUserName.Text.Trim();
clientPassword = txPWD.Text.Trim(); //Start SQL Connection
try
{
//SQL connection parameter
string strConn = "server = 228.66.48.222,1433;user id =" + strUserName + ";PWD =" + strPWD + ";Database = Files";
SqlConnection sc = new SqlConnection();//create SQL connection object
sc.ConnectionString = strConn;
sc.Open();//Open connection //To store SQL Select command
string tempCommand = "select * from CUTool where UserName='"+clientName+"' and Password='"+clientPassword+"'";
SqlCommand sd = new SqlCommand(tempCommand,sc);
SqlDataReader sdr = sd.ExecuteReader();
if (sdr.Read())
{
frm.Close();
//open second form "MainTool"
MainTool mainfrm = new MainTool();
mainfrm.StartPosition = FormStartPosition.CenterScreen;
mainfrm.ShowDialog();
//this.Hide();
sc.Close();
}
else
{
sc.Close();
MessageBox.Show("Invalid username/password combination.");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
return;
}
}