angrynouse
开心呀
采纳率50%
2019-04-17 18:41 阅读 507

求解答:c#Winform项目,关联sqlsever数据库,报了SqlException异常,显示User_info无效

第一次做这个关联数据库的,找不出是哪儿的问题,求大神帮忙看看~

异常如图:图片说明

代码如下:报错在:“sqlConnection.Open();//打开数据库连接”这句

 private void Loginbutton1_Click(object sender, EventArgs e)//登录按钮点击事件
        {

            string username, password;//用来获取用户名和密码的变量
            username = textBoxUser.Text;//textBoxUser是用户名后的文本框
            password = textBoxPassword.Text;//textBoxPassword是密码后的文本框

            //string myconn = "Data Source=服务器名称;Initial Catalog=数据库名称;User ID=登录名;Password=密码";
            string myconn = "Data Source=DESKTOP-2RRTS95;Initial Catalog=User Management;User ID=sa;Password=123456";//数据库实例连接字符串 ;Integrated Security=True
            SqlConnection sqlConnection = new SqlConnection(myconn);//创建数据库连接类的对象,创建数据库连接类的实例
            sqlConnection.Open();//打开数据库连接

数据库自己建的表如下:图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    angrynouse 开心呀 2019-04-17 21:45

    找到了问题的所在,出错的地方不在上边所贴的代码中,而是在下面这句话中:from后边应该是自己的表名,而报异常中的表名字来自于User_info
    这个是参考的其他人代码中的表名。
    String sql = "select UserName,Password from 表名字 where UserName='"+username+"'and Password='"+password+"'";//SQL语句:实现表数据的读取//此处username=textBoxUser.Text( );password=textBoxPassage.Text( );//textBoxUser.Text( )和textBoxPassage.Text( )分别读取 的是两个TextBox文本框,textBoxUser.Text( )是用户名后的文本框,textBoxPassage.Text( )是密码后边的文本框。

    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 StBC
    {
        public partial class LoginForm : Form
        {
            public LoginForm()
            {
                InitializeComponent();
            }
            //
            //登录按钮代码
            //
            //连接SQL Sever数据库需要用到的类:SqlConnection数据库连接类;SqlCommand数据库操作类;SqlDataReader数据库读取
            private void Loginbutton1_Click(object sender, EventArgs e)//登录按钮点击事件
            {
    
                string username, password;//用来获取用户名和密码的变量
                username = textBoxUser.Text;//textBoxUser是用户名后的文本框
                password = textBoxPassword.Text;//textBoxPassword是密码后的文本框
                /*string myconn = "Data Source=服务器名称;Initial Catalog=数据库名称;User ID=登录名(默认登录名是sa);Password=密码(密码是自己设置的)";*/
                string myconn = "Data Source=DESKTOP-2RRTS95;Initial Catalog=Up;User ID=sa;Password=12345";//数据库实例连接字符串 ;Integrated Security=True
                SqlConnection sqlConnection = new SqlConnection(myconn);//创建数据库连接类的对象,创建数据库连接类的实例
                sqlConnection.Open();//打开数据库连接(报异常在此处,改错却在下面这个SQL语句)
    
                //密码需采用MDS加密算法,此代码中没有包含,后续添加。
                String sql = "select UserName,Password from up(这里是关联的数据库中的表名) where UserName='"+username+"'and Password='"+password+"'";//SQL语句:实现表数据的读取
                SqlCommand sqlCommand = new SqlCommand(sql,sqlConnection);//返回一个SqlConnection类型的对象
                SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();//用cmd函数执行语句,返回SqlDataReader对象sqlDataReader,sqlDataReader就是返回的结果集(也就是数据库中查询到的表数据)
                if (textBoxUser.Text=="")
                {
                    MessageBox.Show("请输入用户名!","提示");
                    textBoxUser.Focus();
                }
                else if (textBoxPassword.Text == "")
                {
                    MessageBox.Show("请输入密码!", "提示");
                }
                else 
                {
                    if (sqlDataReader.HasRows)//满足用户名与密码一致,进入下一个界面,即进入这个应用软件
                    {
                        //实现页面跳转
                        MainForm form2 = new MainForm();
                        this.Hide();//隐藏当前窗体
                        form2.ShowDialog();
                        Application.ExitThread();//退出当前窗体,这一步很重要,否则最后可能无法将所有进程关闭。最好是在跳转页面后,将之前的页面退出
                    }
                    else //如果登陆失败,询问是否注册新用户
                    {
                        DialogResult dr = MessageBox.Show("是否注册新用户?","登陆失败",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
                        if (dr == DialogResult.Yes) //打开注册界面
                        {
                            RegisterForm form2 = new RegisterForm();
                            this.Hide();//隐藏当前窗体
                            form2.ShowDialog();
                            Application.ExitThread();
                        }
                        else 
                        {
                            textBoxUser.Text = "";
                            textBoxPassword.Text = "";
                            textBoxUser.Focus();
                            this.Show();
    
                        }
                    }
                }
                sqlConnection.Close();//用完后关闭连接,以免影响其他程序使用
            }
    
    

    登录页面Winform窗体名称是LoginForm如图:
    图片说明

    过程中的问题及解决方法:要想让登录页面在软件工具那个页面的前边,可以在解决方案中的Program.cs中进行操作,具体如图:
    图片说明

    数据库后来改为了Up,数据库中的表命名为up.sqlsever数据库如图:
    图片说明

    点赞 评论 复制链接分享

相关推荐