我希望基本上有一个文本框要求提供ID然后有一个按钮,按下后会将ID发送到如下的查询:
str = "SELECT TOP 1 [Sender Name],[Subject] from [OLE DB Destination] WHERE [CHAT #] ='" + textBox1.Text + "'";
然后将该查询的结果输出到一个文本框或几个,以防我增加我想要输出的行数。
现在我有这个,但它不起作用:
namespace testing
{
public partial class Form1 : Form
{
SqlConnection con = new SqlConnection("Data Source=USBA01\\OU3;Initial Catalog=HOU_Project;Integrated Security=True");
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string query = "SELECT TOP 1 [Sender Name],[Subject] "
+ " from[OLE DB Destination] WHERE[CHAT #] = :chatId ";
con.Open();
using (con)
{
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("chatId", textBox1.Text);
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
reader.Read();
textBox2.Text = reader[0] + " " + reader[1];
}
reader.Close();
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
}
}
我得到一个"错误的语法"这一行出错:
SqlDataReader reader = cmd.ExecuteReader();
我是C#的新手,所以我非常感谢你的帮助。
答案 0 :(得分:1)
使用OleDb
,您需要使用OleD objects like
OleDbConnection ,
OleDbCommand`等。
您的查询语法错误,因为您缺少空格。您需要FROM
和表名之间以及WHERE
和列名之间的空格。
我不确定:chatId
是什么,但是如果您想要连接Oracle,那么请使用Oracle数据库客户端或上面提到的OleDb
对象。
此外,您对SqlConnection
的使用也存在问题;您只需在需要时创建实例,并在完成后处理整个实例。