C#SQL连接字符串“找不到表”

时间:2018-06-20 13:06:25

标签: c# sql

当前,我正在一个生成文件的项目中。...()。 一切似乎都运行良好。我可以连接到数据库,并且我的读写方法也可以使用,但是找不到表。我有一个错误:

  

$ exception {“无效的对象名称'T_SAL'。”} System.Data.SqlClient.SqlException

我不知道问题出在我的连接字符串还是其他东西! 请问有人可以帮助我吗?

我的方法的代码:

// SQL连接方法**

     public static SqlConnection OpenSql(bool Authentification, string   SQL_LOGIN, string SQL_PASSWORD, string SQL_SERVER, string BASE_CONSOLE) 

  {

        try
        {
            SqlConnection conn = new SqlConnection();
            String Securité;

            if (Authentification)
            {
                Securité = "Integrated Security = true";
            }
            else
    {Securité = "User Id =" + SQL_LOGIN + ";" + "Password =" + SQL_PASSWORD;}
       conn.ConnectionString = "Data Source=" + SQL_SERVER + ";Initial Catalog=" + BASE_CONSOLE + ";" + Securité + ";";

            conn.Open();
            return conn;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message.ToString());

            return null;
        }

//生成:

private void Gen_f_Click(object sender, EventArgs e)
    {
        SqlConnection conn = Methodes.OpenSql(Authentification.Checked, SQL_SERVER.Text, BASE_CONSOLE.Text, SQL_LOGIN.Text, SQL_PASSWORD.Text );
        if (conn == null)
        {
            MessageBox.Show("Connexion impossible");
            return;
        }


        try
        {

            //traitement du fichier des salaeiés                
            var lines = Methodes.lecture(fp_text.Text);
            foreach (var ligne in lines)
            {
                string[] cols = ligne.Split(char.Parse(";"));                    
                string Matricule = cols[0];

                if (Matricule != "" && MatriculeExiste(conn, Matricule) == false)
                {
                    string ligneSorties = "";

                    ligneSorties = ligneSorties + cols[0] + ";";


                    Methodes.Ecriture(ligneSorties, "fp_sorties.'Text'", true);
                }

            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message.ToString());

        }
    }




    private bool MatriculeExiste(SqlConnection conn, string Matricule)

         {

        SqlCommand command = new SqlCommand("SELECT MatriculeSalarie FROM [T_SAL] WHERE MatriculeSalarie='" + Matricule + "'", conn);

        using (SqlDataReader reader = command.ExecuteReader())
        {
            if (reader.Read())
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

问题似乎出在您传递给OpenSql方法的参数的顺序中:

 public static SqlConnection OpenSql(bool Authentification, string   SQL_LOGIN, string SQL_PASSWORD, string SQL_SERVER, string BASE_CONSOLE) 

这是您的称呼方式:

    SqlConnection conn = Methodes.OpenSql(Authentification.Checked, SQL_SERVER.Text, BASE_CONSOLE.Text, SQL_LOGIN.Text, SQL_PASSWORD.Text );

参数的顺序肯定存在一些不匹配,您的声明期望SQL_Login, SQL_PASSWORD, SQL_SERVER, BASE_CONSOLE,而您传递的是SQL_SERVER, BASE_CONSOLE, SQL_LOGIN, SQL_PASSWORD

因此,如果您使用Windows身份验证,它将起作用,因为您没有传递登录名和密码,而是传递了密码(而不是正确的数据库名称),因此您的用户最终进入了Master数据库,而该数据库没有包含必需的表。