我正在为数据库(学校项目)制作GUI并且我有以下问题 - 当我尝试将结果从select语句分配给变量时我有奇怪的错误:
类型' System.Data.SqlClient.SqlException'未处理的异常发生在System.Data.dll
中其他信息:')'附近的语法不正确。
这是我的代码:
string sql2 = "SELECT * FROM Car WHERE Make = '@CarID' AND Model = '@CarID2');";
SqlCommand cmd3 = new SqlCommand(sql2, sqlconn);
cmd3.Parameters.AddWithValue("@CarID", model_cbo);
cmd3.Parameters.AddWithValue("@CarID2", make_cbo);
string CarID = cmd3.ExecuteScalar().ToString();
我已经找了很长时间的解决方案,但是找不到任何东西,所以请帮忙
这是我与DB连接的代码:
public CarSpec()
{
InitializeComponent();
connectDB();
this.conn = new OleDbConnection("PROVIDER=SQLOLEDB;Data Source=HENIU;Initial Catalog=ServiceStation; Integrated Security=SSPI;");
conn.Open();
}
public void connectDB()
{
sqlconn = new SqlConnection(@"Data Source=HENIU; Initial Catalog=ServiceStation; Integrated Security=TRUE;");
sqlconn.Open();
da = new SqlDataAdapter();
}
答案 0 :(得分:1)
您的代码中存在三个问题:
改为使用
string sql2 = "SELECT * FROM Car WHERE Make = @CarID AND Model = @CarID2";
SqlCommand cmd3 = new SqlCommand(sql2, sqlconn);
cmd3.Parameters.AddWithValue("@CarID", model_cbo);
cmd3.Parameters.AddWithValue("@CarID2", make_cbo);
SqlDataReader reader = cmd3.ExecuteReader()
if(reader.Read())
{
int carID = Convert.ToInt32(reader["CarID"]);
}
这里我假设carID是一个数字而不是一个字符串(应该是这样)。但是,如果它是一个字符串,那么您可以将该行更改为
string carID = reader["CarID"].ToString();