小编dar*_*eep的帖子

在MySQL触发器中获取CURRENT_USER会返回不正确的值

我有一个旧应用程序(没有可用的源代码)连接到高效的MySQL数据库.由于业务原因,我们必须限制对数据库的访问.出于这个原因,我编写了一个MySQL Trigger,它将限制基于ID访问数据库的用户.

用户通过具有自己的ID和私有密码的应用程序对数据库进行身份验证.

触发器内出现的问题是我有一个SELECT...WHERE子句,该WHERE子句等于:SUBSTRING_INDEX(CURRENT_USER(), @, 1)

基本上每当用户在应用程序中对某个数据库/表进行命中时,我想捕获该用户(这也显示在MySQL服务器的进程中)并基于捕获执行SELECT将返回的语句该给定用户的唯一ID.根据该ID,IF将执行检查,并将授予或撤销对保存数据的访问权限.

问题是,即使我使用User X登录应用程序CURRENT_USER(),MySQL 的功能也会以某种方式捕获我的域用户,无论我做什么.它应该捕获执行该触发器的域用户.

完全触发:

DROP TRIGGER dbname.disable_order_insert_trigger;

DELIMITER $
use dbname$

CREATE TRIGGER disable_order_insert_trigger BEFORE INSERT ON 
dbname.dbtable

FOR EACH ROW
BEGIN
    DECLARE compCode INT unsigned DEFAULT 0;        
    SET @compCode = 1;

    SELECT COMPCODE
    INTO @compCode
    FROM dbname.user_info_table
    WHERE dbname.user_info_table.USERID = SUBSTRING_INDEX(CURRENT_USER(), "@", 1) 
    AND dbname.user_info_table.COMPCODE = 1172 LIMIT 1; 
    SELECT CURRENT_USER() INTO OUTFILE 'C:\\temp\\compCode.txt';

IF @compCode = 1172 THEN 
    CALL something; …
Run Code Online (Sandbox Code Playgroud)

mysql database

8
推荐指数
1
解决办法
2479
查看次数

报告Async Task的进度

你好开发者,

我面临着一个轻微的困境.我有一个WPF应用程序,它读取一个相当大的Excel文件,然后将其作为XML文件输出.我面临的问题是我想将操作的进度报告给处理程序.

我无法让它"顺利"工作,字面意思是GUI线程中的进度条立即被填充,然后立即填充保存从Excel文件读取的内容的DataGrid.

我是Async/Await/Task的新手,到目前为止我一直在使用BackgroundWorker,但我希望获得更多关于此的知识,所以如果这是一个愚蠢的问题,我很抱歉.

我从这里读过Stephen Cleary的教程.

老实说,我不知道为什么进度条不能"顺利"填充,因为它应该......

在GUI中调用的代码:

        var progress = new Progress<int>(progressPercent => pBar.Value = progressPercent);

        Task.Run(() => _sourceService.ReadFileContent(filePath, progress)).ContinueWith(task =>
        {

            dataGrid.ItemsSource = task.Result.DefaultView;
            DataTable = task.Result;

            if (DataTable.Rows.Count > 0)
                BtnCreateXmlFile.IsEnabled = true;

        }, CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext());
Run Code Online (Sandbox Code Playgroud)

方法体ReadFileContent(filePath, progress):

public DataTable ReadFileContent(string filePath, IProgress<int> progress)
    {
        var rowStart = 7;
        var columnStart = 1;

        var existingFile = new FileInfo(filePath);
        using (var package = new ExcelPackage(existingFile))
        {
            var worksheet = package.Workbook.Worksheets["BOP"];
            var dt …
Run Code Online (Sandbox Code Playgroud)

c# wpf asynchronous task

3
推荐指数
1
解决办法
2622
查看次数

标签 统计

asynchronous ×1

c# ×1

database ×1

mysql ×1

task ×1

wpf ×1