Чтение данных из базы данных Access в C # - PullRequest
1 голос
/ 04 января 2011

Привет хочу прочитать данные из базы данных с заданным идентификатором (не Premanent).Я использую следующий код:

        OleDbConnection co = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb");
        co.Open();
        **OleDbCommand cmd = new OleDbCommand("SELECT * FROM Category1 Where ID = '"+textBox1.Text+"'", co);**
        OleDbDataReader reader = cmd.ExecuteReader();

        int i = 1;
        while (reader.Read())
        {
            ListViewItem li = new ListViewItem(i.ToString());
            li.SubItems.Add(reader.GetString(1));
            li.SubItems.Add(reader.GetString(2));
            li.SubItems.Add(reader.GetString(3));
            li.SubItems.Add(reader.GetString(4));
            listView1.Items.Add(li);
            i++;
        }

, но в строке кода Bold отображается сообщение об ошибке:

Несоответствие типов данных критериямвыражение.

Ответы [ 3 ]

3 голосов
/ 04 января 2011

Числовое поле идентификатора? Вы сравниваете это со строкой. Это может быть частью проблемы.

0 голосов
/ 16 сентября 2016

Как говорили другие люди: звучит очень хорошо, работая

string strDSN = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\Db1.accdb";
string strSQL = "SELECT * FROM Tbl1" ;
// create Objects of ADOConnection and ADOCommand
OleDbConnection myConn = new OleDbConnection(strDSN);
OleDbDataAdapter myCmd = new OleDbDataAdapter( strSQL, myConn ); 
myConn.Open();
DataSet dtSet = new DataSet();
myCmd.Fill( dtSet, "Tbl1" );
DataTable dTable = dtSet.Tables[0];
foreach( DataRow dtRow in dTable.Rows )
{
    listBox1.Items.Add( dtRow["id"].ToString());
    listBox2.Items.Add( dtRow["nm"].ToString());
    listBox3.Items.Add(dtRow["ag"].ToString());
}
0 голосов
/ 05 января 2011

Как говорили другие люди: очень похоже, что ID - это не строка.Однако вы должны использовать параметры при добавлении пользовательского ввода или любых переменных в ваш оператор SQL: http://weblogs.sqlteam.com/jeffs/archive/2006/07/21/10728.aspx

OleDbCommand cmd = new OleDbCommand("SELECT * FROM Category1 WHERE id = @id", co);
cmd.Parameters.AddWithValue("@id", textBox1.Text);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...