访问 2003 与 2010 C#
我的 WHERE 子句有问题。最初我使用 OR 但现在意识到它必须与 WHERE 我没有做对的事情有关,还是其他事情?请有人可以在这里帮助我。提前致谢。ps c sharp student 以前帮过我。
学生表
字段名称数据类型
ID Number
FirstName Text
LastName Text
StudentDOB Date/Time
Course Text
连接字符串:
myCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\...\StudentDB.mdb");
btn查找方法...
private void btnFind_Click(object sender, EventArgs e)
{
string title = txtSearch.Text.ToString();
string queryString = "SELECT * FROM StudentTable WHERE ID = ?"; //I have also tried WHERE ID = @ID without success
OleDbCommand command = new OleDbCommand();
command.CommandText = queryString;
command.Connection = myCon;
myCon.Open();
OleDbDataReader dr = command.ExecuteReader();
while (dr.Read())
{
txtStudID.Text += String.Format("ID: {0}\n", dr["ID"].ToString());
txtFirstName.Text += String.Format("FirstName: {0}\n", dr["FirstName"].ToString());
txtLastName.Text += String.Format("LastName: {0}\n", dr["LastName"].ToString());
txtStudDOB.Text += String.Format("StudentDOB: {0}\n", dr["StudentDOB"].ToString());
txtCourse.Text += String.Format("Course: {0}\n", dr["Course"].ToString());
}
myCon.Close();
}
我的删除方法是这样的,没有问题(我想你可能想知道)......
private void btnDelete_Click(object sender, EventArgs e)
{
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "DELETE FROM StudentTable WHERE txtStudID = ?";
cmd.Parameters.AddWithValue("@ID", txtStudID.Text);
cmd.Parameters.AddWithValue("@FirstName", txtFirstName.Text);
cmd.Parameters.AddWithValue("@LastName", txtLastName.Text);
cmd.Parameters.AddWithValue("@StudDOB", txtStudDOB.Text);
cmd.Parameters.AddWithValue("@Course", txtCourse.Text);
cmd.Connection = myCon;
myCon.Open();
cmd.ExecuteNonQuery();
myCon.Close();
}
我在Access中测试了sql查询没有问题...
SELECT StudentTable.ID
FROM StudentTable
WHERE (((StudentTable.ID)=1));
找到解决方案
我从这个链接中找到了一个解决方案,当然是从stackoverflow....
感谢大家的宝贵时间,尤其是布拉德。
布拉德 - 这是代码
private void btnFind_Click(object sender, EventArgs e)
{
using (var command = myCon.CreateCommand())
{
command.CommandText = "select * from StudentTable where ID = @ID";
command.Parameters.AddWithValue("ID", int.Parse(txtSearch.Text));
myCon.Open();
var reader = command.ExecuteReader();
while (reader.Read())
{
txtStudID.Text = reader["ID"].ToString();
txtFirstName.Text = reader["FirstName"].ToString();
txtLastName.Text = reader["LastName"].ToString();
txtStudDOB.Text = reader["StudentDOB"].ToString();
txtCourse.Text = reader["Course"].ToString();
}
} myCon.Close();
myCon.Close();
}
我实际上可能不会使用 OR 子句——这样就可以了。