如何在 C# 中连接 SQL 并使用 Adapter 的命令

Posted

技术标签:

【中文标题】如何在 C# 中连接 SQL 并使用 Adapter 的命令【英文标题】:How can I connect the SQL in C# and using the command of Adapter 【发布时间】:2017-11-05 14:16:28 【问题描述】:
private void button2_Click(object sender, EventArgs e)
       
    OleDbConnection cnn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\bbbde\Database2.mdb");
    cnn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\bbbde\Database2.mdb";
    OleDbDataAdapter da = new OleDbDataAdapter("select count(*) Form nameList where  name='" + textBox1.Text + "'and password ='" + textBox2 + "'", cnn);

    DataTable dt = new DataTable();
    da.Fill(dt);

    if (dt.Rows[0][0].ToString() == "1")
    
        this.Hide();
        Form2 frm = new Form2();
        frm.Show();
    

这是我得到的错误:

System.Data.OleDb.OleDbException: '查询表达式'count(*) Form nameList where name=''and password ='System.Windows.Forms.TextBox, Text: ''中的语法错误(缺少运算符)。 '

【问题讨论】:

查询中应该是textBox2.Text。顺便说一句,这段代码很容易发生 sql 注入。您应该使用参数化命令。 ***.com/a/33688556/2946329 什么是Form?使用 FROM "select count(*) FROM nameList where name='" 并使用 Chetan 已经提到的参数 谢谢。但现在的问题是 System.Data.OleDb.OleDbException: 'Data type mismatch in criteria expression。' 【参考方案1】:

你不见了

    Form 其错误的权利是 FROM textBox2 在这里您将 textBox2 对象分配为密码,而不是其文本,因此它应该是 textBox2.Text

更正的代码

private void button2_Click(object sender, EventArgs e)
       
    OleDbConnection cnn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\bbbde\Database2.mdb");
    cnn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\bbbde\Database2.mdb";
    OleDbDataAdapter da = new OleDbDataAdapter("select count(*) FROM nameList where  name='" + textBox1.Text + "'and password ='" + textBox2.Text + "'", cnn);
    DataTable dt = new DataTable();
    da.Fill(dt);
    if (dt.Rows[0][0].ToString() == "1")
    

        this.Hide();
        Form2 frm = new Form2();
        frm.Show();
    

【讨论】:

【参考方案2】:

好吧,我必须用一个新的方法重写我的代码,它正在使用 oleDbDataAdapter。 问题是我想用 c# 创建一个登录并使用 oleDbDataAdapter 连接访问。我不知道如何使用选择功能到登录按钮,如何编写?

private void button2_Click(object sender, EventArgs e)

    

        oleDbDataAdapter1.SelectCommand.CommandText =

                 "select * from book where usersname = '" + textBox1.Text + "' ";


        oleDbDataAdapter1.SelectCommand.CommandText =

                 "select * from book where password = '" + textBox2.Text + "' ";


        dataSet11.Clear();

        oleDbDataAdapter1.Fill(dataSet11);

        DataTable dt = new DataTable();


        oleDbDataAdapter1.Fill(dt);

        if (dt.Rows[0][0].ToString() == "1")         

        


            this.Hide();

            Form2 frm = new Form2();

frm.Show();

        

    else

        

MessageBox.Show("请检查您的用户名和密码");

        

    

【讨论】:

以上是关于如何在 C# 中连接 SQL 并使用 Adapter 的命令的主要内容,如果未能解决你的问题,请参考以下文章

如何以最佳方式在 C# 中处理 SQL 连接? [复制]

需要有关在 asp.net C# 中使用的 sql 连接的信息

如何使用基于 SQL Query 的连接在 C# 中编写 LINQ?

如何从 C# 连接到任何数据库?

SQL 连接字符串在 C# 中无法识别并抛出异常

在c# app中,如何在SQL中连接子任务表的外键?