字符串方法 null 在其他方法的 select 查询中
string method null is in other method's select query
我正在创建学生出勤信息系统。
如您所见,这些方法相互关联。
students
table 包含每个学生的一般信息。
有些同学总是缺席,所以没有students_ID in register
table。
这会导致 da.Fill(dt) 出错。它说:
MySqlException was unhandled by user code "You have an error in your
SQL syntax; check the manual that corresponds to your MySQL server
version for the right syntax to use near ')' at line 1"
如何消除这个错误?
private string getUquvchilar_ID()
{
var fish = ddlName.Text.Replace("'", "''");
MySqlConnection con = new MySqlConnection(constr);
con.Open();
string query = "Select Students_ID from students where CONCAT(Familiyasi , ' ', Ismi , ' ', Sharifi)='" + fish + "'";
MySqlCommand cmd = new MySqlCommand(query);
cmd.Connection = con;
String s = (cmd.ExecuteScalar() ?? String.Empty).ToString();
con.Close();
return s;
}
private void BindGrid()
{
MySqlConnection con = new MySqlConnection(constr);
MySqlCommand cmd = new MySqlCommand("SELECT * FROM rasmlar where Rasm_ID in (" + String.Join(",", getImage_ID()) + ")", con);
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
gvImages.DataSource = dt;
gvImages.DataBind();
}
private List<int> getImage_ID()
{
List<int> i = new List<int>();
MySqlConnection con = new MySqlConnection(constr);
con.Open();
string query = "Select bosh_rasm_ID, Tugal_rasm_ID from register where students_ID='" + getUquvchilar_ID() + "'";
MySqlCommand cmd = new MySqlCommand(query);
cmd.Connection = con;
MySqlDataReader reader = cmd.ExecuteReader();
if (reader != null && reader.HasRows)
{
foreach (DbDataRecord s in reader)
{
if (!reader.IsDBNull(reader.GetOrdinal("bosh_rasm_ID")))
i.Add(s.GetInt32(0));
else
i.Add(0);
if (!reader.IsDBNull(reader.GetOrdinal("Tugal_rasm_ID")))
i.Add(s.GetInt32(1));
else
i.Add(0);
}
}
return i;
}
如果 getImage_ID() returns 一个空列表 select 语句将是 SELECT * FROM rasmlar where Rasm_ID in ()
...那是一个无效的 sql 语句.. . 你必须明确地处理这种情况。
我正在创建学生出勤信息系统。
如您所见,这些方法相互关联。
students
table 包含每个学生的一般信息。
有些同学总是缺席,所以没有students_ID in register
table。
这会导致 da.Fill(dt) 出错。它说:
MySqlException was unhandled by user code "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1"
如何消除这个错误?
private string getUquvchilar_ID()
{
var fish = ddlName.Text.Replace("'", "''");
MySqlConnection con = new MySqlConnection(constr);
con.Open();
string query = "Select Students_ID from students where CONCAT(Familiyasi , ' ', Ismi , ' ', Sharifi)='" + fish + "'";
MySqlCommand cmd = new MySqlCommand(query);
cmd.Connection = con;
String s = (cmd.ExecuteScalar() ?? String.Empty).ToString();
con.Close();
return s;
}
private void BindGrid()
{
MySqlConnection con = new MySqlConnection(constr);
MySqlCommand cmd = new MySqlCommand("SELECT * FROM rasmlar where Rasm_ID in (" + String.Join(",", getImage_ID()) + ")", con);
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
gvImages.DataSource = dt;
gvImages.DataBind();
}
private List<int> getImage_ID()
{
List<int> i = new List<int>();
MySqlConnection con = new MySqlConnection(constr);
con.Open();
string query = "Select bosh_rasm_ID, Tugal_rasm_ID from register where students_ID='" + getUquvchilar_ID() + "'";
MySqlCommand cmd = new MySqlCommand(query);
cmd.Connection = con;
MySqlDataReader reader = cmd.ExecuteReader();
if (reader != null && reader.HasRows)
{
foreach (DbDataRecord s in reader)
{
if (!reader.IsDBNull(reader.GetOrdinal("bosh_rasm_ID")))
i.Add(s.GetInt32(0));
else
i.Add(0);
if (!reader.IsDBNull(reader.GetOrdinal("Tugal_rasm_ID")))
i.Add(s.GetInt32(1));
else
i.Add(0);
}
}
return i;
}
如果 getImage_ID() returns 一个空列表 select 语句将是 SELECT * FROM rasmlar where Rasm_ID in ()
...那是一个无效的 sql 语句.. . 你必须明确地处理这种情况。