Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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# asp.net上的Insert语句未在mysql表上插入_C#_Asp.net_Mysql - Fatal编程技术网

C# asp.net上的Insert语句未在mysql表上插入

C# asp.net上的Insert语句未在mysql表上插入,c#,asp.net,mysql,C#,Asp.net,Mysql,我正在asp.net上创建一个web表单,允许最终用户根据选定的部门分配多个用户参加测验 数据库是mysql数据库,因为我使用了joomla mysql上的表是:jos_users_测验,包含以下列: id quiz_id user_id 我有一个叫第二个的 jos_dhruprofile与此列 id name username department 我需要从所选部门选择所有用户id,并将这些id插入user_quizzes表 我有两个查询试图插入第一个查询,该查询具有所选部门的条件,

我正在asp.net上创建一个web表单,允许最终用户根据选定的部门分配多个用户参加测验

数据库是mysql数据库,因为我使用了joomla

mysql上的表是:jos_users_测验,包含以下列:

id
quiz_id
user_id  
我有一个叫第二个的

jos_dhruprofile与此列

id
name
username
department 
我需要从所选部门选择所有用户id,并将这些id插入user_quizzes表

我有两个查询试图插入第一个查询,该查询具有所选部门的条件,但在 没有WARE语句的那一个实际上是插入的,我没有得到任何错误,只是插入不成功

 string quizidselected = DropDownList1.SelectedValue;
   string deptselected = ListBox2.SelectedValue;
   OdbcCommand cmd = new OdbcCommand("INSERT INTO jos_jquarks_users_quizzes (user_id, quiz_id) SELECT uid, ' " + quizidselected + " ' FROM jos_dhruprofile WHERE department = ' " + deptselected.ToString() + " '"); 
          // OdbcCommand cmd = new OdbcCommand("INSERT INTO jos_jquarks_users_quizzes (user_id, quiz_id)    SELECT uid, ' " + quizidselected + " ' FROM dhruprofile "); 
提前感谢您查看我的代码

完整代码

要插入的源代码和ASP.NET表单

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Collections.Specialized;
using System.Text;
using System.Data;
using System.Data.Odbc;

public partial class _Default : System.Web.UI.Page 
{    
    protected void Page_Load(object sender, EventArgs e)
    {

    }

     private void InsertRecords(StringCollection sc)
    {
        string ConnectionString = @"driver={MySQL ODBC 5.1 Driver};server=appdevelsvr;database=xxxx;uid=xx;pwd=xx;";
        OdbcConnection conn = new OdbcConnection(ConnectionString);

        try
        {
            conn.Open();

            string quizidselected = DropDownList1.SelectedValue;
            string deptselected = ListBox2.SelectedValue;
            OdbcCommand cmd = new OdbcCommand("INSERT INTO jos_jquarks_users_quizzes (user_id, quiz_id) SELECT uid, ' " + quizidselected + " ' FROM jos_dhruprofile WHERE department = ' " + deptselected.ToString() + " '"); 
          // OdbcCommand cmd = new OdbcCommand("INSERT INTO jos_jquarks_users_quizzes (user_id, quiz_id)    SELECT uid, ' " + quizidselected + " ' FROM dhruprofile "); 

            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            cmd.ExecuteNonQuery();
            Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "Script", "alert('Records Successfuly Saved!');", true);
            Response.Write(deptselected.ToString());
           // Response.Write(sql.ToString());

        }

        catch (System.Data.SqlClient.SqlException ex)
        {
            string msg = "Insert Error:";
            msg += ex.Message;
            throw new Exception(msg);

        }

        finally
        {

            conn.Close();

        }

    }


    protected void Button1_Click(object sender, EventArgs e)
    {

        StringCollection sc = new StringCollection();

        foreach (ListItem item in ListBox2.Items)
        {

            if (item.Selected)
            {
                sc.Add(item.Text);

            }


        } 

                InsertRecords(sc);

    }


}

我假设您希望我们调试的查询是带有where子句的查询

请在为cmd创建新odbc命令的行上设置断点。您需要检查“deptselected”的值

或者,您可以debug.writeline该SQL语句并将其复制粘贴到SQL查询UI中。请自行运行select。我认为它不会返回任何行,因为您的表中不存在“deptselected”,或者“deptselected”为空

还有两个很好的编程指针:-

一,。使用参数化SQL语句,而不是将值追加到字符串中。您的代码容易受到SQL注入攻击。这很糟糕

二,“deptselected”已经是字符串,您不需要再次“ToString”它

希望这有帮助

编辑:-
我刚刚读了上面的评论。在该表上选择*星,其中其他某个列=另一个值,以获得您感兴趣的同一行。检查部门列的字符串长度。检查字符串开头或后面是否有空格

此语句字符串deptselected=ListBox2.SelectedValue中的值是多少。您是否尝试过使用where子句在Db上直接执行命令查询?我添加了php,因为我通过odbc发送的查询是到mysql数据库的,我知道mysql是为使用php而设计的,因此,meabe类似的故障排除技术可以处理我的代码/单独尝试select查询,看看它是否返回任何内容。@TonyR说mysql是为PHP设计的,就像说MSSQL是为VBA设计的一样。PHP碰巧有MySQL支持,但它不是设计用来支持它的。MySQL可以用C++、C、Python…和其他程序一样,它只是一个数据库存储引擎,PHP与MySQL几乎没有任何关系。有些东西是用字符串编写的,这不会从jos_dhruprofile返回任何SELECT*,其中department='it'哦,我发现了第一个缺陷,department值在某些情况下包含空格。。。像……这样使用安全吗?您可以尝试Trim:它的安全性取决于您的业务需求和该字段的长度。如果您可以保证“%IT%”永远不会与任何其他记录匹配,那么这可能会起作用。如果有人在该列中插入任何包含“IT”的单词,那么您的代码将中断。就个人而言,我会清理数据库并修复插入记录的应用程序中的错误。或者,如果无法更改插入记录的应用程序,则定期运行修剪这些记录的作业。