在asp.net上插入语句,而不是在mysql表上插入语句

本文关键字:插入 语句 mysql asp net | 更新日期: 2023-09-27 18:06:15

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

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

mysql上的表是:jos_users_quizzes,包含以下列:

id
quiz_id
user_id  

我有第二个叫做

jos_dhruprofile包含这些列

id
name
username
department 

我需要选择所选部门的所有用户id,并将这些id插入user_quizzes表中。

我有两个查询试图插入第一个,其中有选择的部门的条件不工作,而没有were语句的那个实际上插入了,我没有得到任何错误,只是插入没有…

 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);
    }

}

在asp.net上插入语句,而不是在mysql表上插入语句

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

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

或者,您可以调试。编写SQL语句并将其复制粘贴到SQL查询UI中。请单独运行select。我认为它不会返回任何行,因为要么'deptselected'不存在于你的表或'deptselected'是空的。

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

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

2)。'deptselected'已经是一个字符串,你不需要再'ToString'它。

希望这对你有帮助。

编辑:-我刚刚读了上面的评论。在该表上执行select *(*),其中someother_column = another_value获取您感兴趣的同一行。检查部门列的字符串长度。检查字符串的开头或后面是否有空格。