比较来自不同表的值时出现语法错误
本文关键字:语法 错误 比较 | 更新日期: 2023-09-27 18:17:48
我得到一个"语法错误",而使用下面的代码。当你输入这个特定蛋白质的所有值时,它应该避免添加行(这是一个结合生物学和编程的项目)。'serialPro'是一个包含数字的文本框,但保存为字符串。'Reset_Click'重置所有文本框。代码:
if ((serialPro.Text == String.Empty) || (codon1.Text == String.Empty))
{
MessageBox.Show("You didn't fill all the fields","Attention"
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button1);
Reset_Click(sender, e);
}
else
{
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:''Projects_2012''Project_Noam''Access''myProject.accdb";
OleDbConnection myConnection = new OleDbConnection(connectionString);
myConnection.Open();
string mySQL = " SELECT COUNT(tblOrderAA.orderAASerialPro) AS orderAASerialPro1 FROM tblOrderAA" +
"WHERE tblOrderAA.orderAASerialPro=" + Convert.ToInt32(serialPro.Text) +
" SELECT (tblProInfo.proInfoSerialNum) FROM tblProInfo WHERE tblProInfo.proInfoSerialNum=" +
Convert.ToInt32(serialPro.Text);
OleDbCommand datacommand = new OleDbCommand(mySQL, myConnection);
OleDbDataReader dataReader = datacommand.ExecuteReader();
dataReader.Read();
if (dataReader.GetInt32(0) == dataReader.GetInt32(1))
{
MessageBox.Show("You have entered all the amino acids for this protein", "Attention",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button1);
Reset_Click(sender, e);
}
TNX的帮助!
我不确定是否有两个选择语句在你的MySQL查询是有效的或不,或者为什么你采取一个字符串只是把它变成一个数字,所以你可以把它添加到另一个字符串,但这可能是语法错误的原因。
" SELECT COUNT(tblOrderAA.orderAASerialPro) AS orderAASerialPro1 FROM tblOrderAA" +
"WHERE tblOrderAA.orderAASerialPro=" + Convert.ToInt32(serialPro.Text) +
你连接这个字符串的方式意味着在tblOrderAA
和WHERE
之间没有空格。中间加一个空格
您还应该查找SQL注入/参数化查询
首先,您设置它的方式,即使访问支持它,也需要处理不同的结果集(您必须调用Reader)。nextreresult,以便从第二个select语句中获取值。
然而,这是一个很容易解决的问题:把你的查询分解成单独的命令,只从你正在寻找的每个查询中获得一个值:
int TotalCompleted;
int TotalToComplete;
string mySQL;
OleDbCommand datacommand;
object oValue;
mySQL = " SELECT COUNT(tblOrderAA.orderAASerialPro) AS orderAASerialPro1 FROM tblOrderAA WHERE tblOrderAA.orderAASerialPro=" + Convert.ToInt32(serialPro.Text);
datacommand = new OleDbCommand(mySQL, myConnection);
oValue = datacommand.ExecuteScalar();
if (oValue != DBNull.Value)
{
TotalCompleted = (int)oValue;
} else
{
TotalCompleted = 0;
}
mySQL = "SELECT tblProInfo.proInfoSerialNum FROM tblProInfo WHERE tblProInfo.proInfoSerialNum=" + Convert.ToInt32(serialPro.Text);
datacommand = new OleDbCommand(mySQL, myConnection);
oValue = datacommand.ExecuteScalar();
if (oValue != DBNull.Value)
{
TotalToComplete = (int)oValue;
} else
{
TotalToComplete = 0;
}
if (TotalCompleted == TotalToComplete)
{
MessageBox.Show("You have entered all the amino acids for this protein", "Attention",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button1);
Reset_Click(sender, e);
}