Windows窗体应用程序数据库:“System.Data.dll中出现未处理的'System.ArgumentException'类型异常”

时间:2017-01-14 14:20:03

标签: c#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

    private void Login_Click(object sender, EventArgs e)
    {

        if ((UserName.Text != "") && (Password.Text != ""))
        {
            string constring = ConfigurationManager.ConnectionStrings["The_patients.Properties.Settings.Users1ConnectionString"].ConnectionString;
            SqlConnection con = new SqlConnection(constring);
            string q = "select * from Users where UserName = @Username and Password = @Password ";
            SqlCommand cmd = new SqlCommand(q, con);
            cmd.Parameters.AddWithValue("@Username", this.UserName.Text);
            cmd.Parameters.AddWithValue("@Password", this.Password.Text);
            con.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                if (dr.HasRows == true)
                {
                    MessageBox.Show("Login Successfully Done");
                }
            }
            if (dr.HasRows == false)
            { MessageBox.Show("Access Denied, password username mismatched"); }
        }
        else { MessageBox.Show("Enter username and password"); }
    }
}
}

我正在尝试将我的应用程序连接到数据库,并检查用户名和密码验证但是当我运行我的代码并写入用户名和密码时,它会给我这个错误我试着知道什么是错的但我可以发现它有什么解决方案吗?

  

此处显示错误SqlConnection con = new SqlConnection(constring);

的App.config

 <?xml version="1.0" encoding="utf-8" ?>
 <configuration>
 <configSections>
 </configSections>
 <connectionStrings>
 <add name="The_patients.Properties.Settings.Users1ConnectionString"
        connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\users\mohammad\documents\visual studio 2015\Projects\The patients\The patients\Users1.mdb"
        providerName="System.Data.OleDb" />
</connectionStrings>
<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>

我在谷歌搜索过多,但我没有找到一个好的答案。

1 个答案:

答案 0 :(得分:2)

您正在使用SqlConnection(以及Sql Server客户端库中的所有类),但您的数据库是MS-Access。您需要使用System.Data.OleDb命名空间中的OleDbConnection和相关OleDbXXXX类

Warning:  implode(): Invalid arguments passed in ...

在此期间,请记住密码是MS-Access中的保留关键字,因此您需要使用方括号

因此,重写代码将是

OleDbConnection con = new OleDbConnection(constring);

请注意,连接,命令和读取器等一次性对象应该包含在using语句中,以确保正确处理这些对象。