我想用C#写一个登录,点登录出现Form2  代码都写好了。就是按F5运行的时候  输入帐号密码就卡住了。好像是连接到数据库出问题  是不是要在数据库里建一个表?  大概怎么建   你们知道吗 教教我吧  很重要,还有  连接的代码是什么。, 谢谢了

解决方案 »

  1.   

    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;
                        }
                    }
                }
            }看看呀  哪里错了
      

  2.   

    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语句中用单引号)。
      

  3.   

    是你原来代码里的。。其他的逻辑判断我没细看,就看了看连接字符串和SQL语句。
      

  4.   

    通常新建一个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("登录失败");

    //这是我通常的用法,一般都是用三层架构的,不过在这里简化了
      

  5.   

    附上我做的程序的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.");
                    }
                    
                    
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                    return;
                }
            }