Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
扫描我的表c#mysql_C#_Mysql - Fatal编程技术网

扫描我的表c#mysql

扫描我的表c#mysql,c#,mysql,C#,Mysql,所以我在做一个图书馆系统,我在借书和还书的过程中遇到了一个问题 当我借一本书然后归还时,将状态更改为return,然后再次成功地借用同一本书,然后当我归还时,将显示return books(归还书的陷阱)消息 sql = "SELECT * FROM tbltransactionbooks WHERE fBarCodeNo LIKE '" + txtBARCODE_R.Text.Trim() + "%'"; cfgotcall.engageQuery(sql); if (cfgotcall.tb

所以我在做一个图书馆系统,我在借书和还书的过程中遇到了一个问题

当我借一本书然后归还时,将状态更改为return,然后再次成功地借用同一本书,然后当我归还时,将显示return books(归还书的陷阱)消息

sql = "SELECT * FROM tbltransactionbooks WHERE fBarCodeNo LIKE '" + txtBARCODE_R.Text.Trim() + "%'";
cfgotcall.engageQuery(sql);
if (cfgotcall.tbl.Rows[0]["fStatus"].ToString().Equals("Borrowed"))
{
    txtTITLE_R.Text = cfgotcall.tbl.Rows[0]["fBookTitle"].ToString();
    txtAUTHOR_R.Text = cfgotcall.tbl.Rows[0]["fAuthor"].ToString();
    txtYEAR_R.Text = cfgotcall.tbl.Rows[0]["fBookYr"].ToString();
    txtACCNO_R.Text = cfgotcall.tbl.Rows[0]["fAccNo"].ToString();
    txtCALLNO_R.Text = cfgotcall.tbl.Rows[0]["fCallNo"].ToString();
    txtBARCODE_BR.Text = cfgotcall.tbl.Rows[0]["fBarcodeNo"].ToString();
    txtSEARCH.Text = cfgotcall.tbl.Rows[0]["fStudent"].ToString();
    txtReturnDate.Text = cfgotcall.tbl.Rows[0]["fBorrowDate"].ToString();
    txtIDNO.Text = cfgotcall.tbl.Rows[0]["fIDStudent"].ToString();
    txtLEVEL.Text = cfgotcall.tbl.Rows[0]["fLevel"].ToString();
}
else 
{
    MessageBox.Show("Book already returned.");
}
我在pic中自己的代码中调试的是,它不会扫描
tbltransactionbooks
中的整行,它只读取我表格的
第一行

33  123 NAME    IT  2/20/2017   2/20/2017   [HISTORY OF] COMPUTERS: THE MACHINES WE THINK WITH  Returned
33  123 NAME    IT  2/21/2017   2/21/2017   [HISTORY OF] COMPUTERS: THE MACHINES WE THINK WITH  Borrowed
!![2] :


如何扫描表格中的整行?如果我上面的代码看起来不好,我会公开建议如何使它干净。谢谢

您只访问表的第一行[0]。您需要使用for或foreach循环遍历所有这些循环

旁注:我想这是一个家庭作业。如果你在互联网上找到完整的解决方案,那对你没有任何好处。您应该尝试了解集合/数组是如何工作的,以及如何使用循环遍历它们

一些教程可帮助您完成此任务:


cfgotcall.tbl.Rows[0]
仅指第一行

您应该迭代每一行:

sql = "SELECT * FROM tbltransactionbooks WHERE fBarCodeNo LIKE '" + txtBARCODE_R.Text.Trim() + "%'";
cfgotcall.engageQuery(sql);

foreach(var row in cfgotcall.tbl.Rows)
{
   if (row["fStatus"].ToString().Equals("Borrowed"))
   {
     txtTITLE_R.Text = row["fBookTitle"].ToString();
     txtAUTHOR_R.Text = row["fAuthor"].ToString();
     txtYEAR_R.Text = row["fBookYr"].ToString();
     txtACCNO_R.Text = row["fAccNo"].ToString();
     txtCALLNO_R.Text = row["fCallNo"].ToString();
     txtBARCODE_BR.Text = row["fBarcodeNo"].ToString();
     txtSEARCH.Text = row["fStudent"].ToString();
     txtReturnDate.Text = row["fBorrowDate"].ToString();
     txtIDNO.Text = row["fIDStudent"].ToString();
     txtLEVEL.Text = row["fLevel"].ToString();
   }
   else 
   {
      MessageBox.Show("Book already returned.");
   }
} 

为了避免由于列名和SQL查询中的键入错误而导致运行时错误,可以使用或。这样,每一行都将转换为一个对象,您可以通过访问对象属性\字段来访问每一列。

第一行被选中,因为仅使用访问第一行:

if (cfgotcall.tbl.Rows[0]...)

要检查所有行,请使用for或foreach循环遍历cfgotcall.tbl.rows集合。

您确实需要清理输入。很抱歉,我第一次在这里,在google上找不到我的问题。这与您的问题无关,下面给出了答案(您仅从第一行结果中读取)。另一个问题是,您无意中让人们能够通过直接读取SQL查询中的文本输入来编辑您的数据库。有人可以在文本框中键入
;删除表用户--如果你有那张表,你的数据库将执行指令。哦,好的,我知道你刚才说的,这是一个
sql注入
先生,你能不能发布一些关于如何使用foreach迭代数据库的例子,我将试着研究一下。举个例子,下面的KernelMode中的答案就是您想要的答案。foreach(cfgotcall.tbl.Rows中的var row)…是的,这是一个过期的作业,我也同意这对我作为一名学生没有任何好处,因为我现在所做的将反映我以后的职业生涯。我只是不善于分析代码和调整它们