当前位置: 首页 > 面试题库 >

清理SQL数据

狄阳华
2023-03-14
问题内容

Google讨论了有关清理Web访问查询的各种讨论,但我找不到任何解决我所关注的问题的方法:

在ac#程序中清理用户输入数据。这必须通过可逆的转换来完成,而不是通过移除来完成。作为问题的简单示例,我不想破坏爱尔兰的名字。

最好的方法是什么,有没有执行此功能的库函数


问题答案:

这取决于您所使用的SQL数据库。例如,如果要在MySQL中使用单引号文字,则需要使用反斜杠Dangerous:'和转义的转义字符文字:\'。对于MS-SQL,情况完全不同,危险:' 转义:''。以这种方式对数据进行转义时,不会删除任何内容,这是一种表示控制字符(如引号)的字面形式的方式。

这是一个从文档中获取对MS-SQL和C#使用参数化查询的示例:

private static void UpdateDemographics(Int32 customerID,
    string demoXml, string connectionString)
{
    // Update the demographics for a store, which is stored 
    // in an xml column. 
    string commandText = "UPDATE Sales.Store SET Demographics = @demographics "
        + "WHERE CustomerID = @ID;";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(commandText, connection);
        command.Parameters.Add("@ID", SqlDbType.Int);
        command.Parameters["@ID"].Value = customerID;

        // Use AddWithValue to assign Demographics.
        // SQL Server will implicitly convert strings into XML.
        command.Parameters.AddWithValue("@demographics", demoXml);

        try
        {
            connection.Open();
            Int32 rowsAffected = command.ExecuteNonQuery();
            Console.WriteLine("RowsAffected: {0}", rowsAffected);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

对于MySQL,我不知道可以使用的参数化查询库。您应该使用mysql_real_escape_string()或有时可以使用此函数

public static string MySqlEscape(this string usString)
{
    if (usString == null)
    {
        return null;
    }
    // SQL Encoding for MySQL Recommended here:
    // http://au.php.net/manual/en/function.mysql-real-escape-string.php
    // it escapes \r, \n, \x00, \x1a, baskslash, single quotes, and double quotes
    return Regex.Replace(usString, @"[\r\n\x00\x1a\\'""]", @"\$0");
}


 类似资料:
  • 问题内容: 我想在对两列施加唯一约束之前清理表中的某些数据。 输出应为 我正在寻找重复 的第一 行 之后的 所有行 前任: 第1,2行的(b,c)为(2,3)。第1行是正确的,因为它是第一个,第2行不是。 行4,6,7的(b,c)为(4,4),行4可以,因为它是第一个,而6,7则不是。 然后,我将: ..并添加唯一约束。 我当时正在考虑与自身进行测试的交集,但不确定从哪里开始。 问题答案: 我进行

  • In[1]: import pandas as pd import numpy as np 1. 用stack清理变量值作为列名 # 加载state_fruit数据集 In[2]: state_fruit = pd.read_csv('data/state_fruit.csv', index_col=0) state_fruit out[2]: # stack

  • 有什么方法可以用spring batch实现这一点,或者我应该创建一个Dao并批量删除每个集合的旧数据。

  • 问题内容: 我有一个不幸的任务,就是清理一堆旧的ColdFusion代码。查询无处不在,我正在努力将它们全部移至常见的CFC,以便于维护。 我遇到了一个问题,因为它会自动将单引号转换为双单引号。如何覆盖该行为? 更具体的信息如下。 所以这是我开始的查询: 奇怪的是,由于要显示文字,所以正在“选择”一个文字(再次,我没有写这个,我只是想稍微清理一下)。因此,在通用函数中,select子句有一个可选参

  • Clean,清理。把未跟踪的文件清理掉。 练习 1,在项目下面新建一个文件,名字是 demo.md。 touch demo.md 然后查看状态,会返回: On branch master Untracked files: (use "git add <file>..." to include in what will be committed) demo.md nothing a

  • CREATE TABLE充当来自CSVREAD的SELECT*('c://users/h/downloads/SERVES.csv');SQL语句“create TABLE SERVES AS SELECT*FROM CSVREAD([*]'c://users/h/downloads/SERVES.csv')”中的语法错误;SQL语句:CREATE TABLE充当从CSVREAD中选择*('c:/