在表格中输入有效数据,输入";"在哪里

时间:2014-09-05 02:54:51

标签: c#

我想检查有效数据......

我有一张Divisi表,里面有这样的样本数据:

=====================
IdDivisi   NamaDivisi
=====================
1           DivisiA
2           DivisiB
3           DivisiC 

在我的代码中,我得到了价值: string data = DivisiA; DivXXX

因此,当选中时,警报将显示无效数据。 我想得到这样的查询:

select NamaDivisi from Divisi where NamaDivisi IN('DivisiA','DivXXX')

,结果为null或空或无效。 因为有值/数据' DivXXX'在Divisi表上无效

但是这一次,当我调试时,我得到了这样的查询结果:

select NamaDivisi from Divisi where NamaDivisi IN ('DivisiA;DivXXX')

=============================================== ====

这是完整的代码。

private string CekValidDivisi(string data)
{
    DivisiFacade div = new DivisiFacade();
    string getDivisi = div.CekValidData(data);
    return getDivisi;
}

public string CekValidData(string data)
{
    SqlConnection Conn = DataSetting.GetSqlConnection();
    SqlCommand Comm = new SqlCommand();
    try
    {
       Conn.Open();
       string sql = @"select NamaDivisi from Divisi where NamaDivisi IN('" + data + "')";
       Comm = new SqlCommand(sql, Conn);
       data = Convert.ToString(Comm.ExecuteScalar());
    }
    finally
    {
       Conn.Close();
       Conn.Dispose();
    }
    return data;
}

请帮我解决我的代码中的问题。谢谢......

1 个答案:

答案 0 :(得分:0)

您的代码中存在多个问题,但这不是教您基础知识的地方,所以我会尝试坚持这个主题。如果你想拥有这样的参数,你必须先创建它。我猜data包含值为DivisiA;DivXXX的字符串(我认为DivXXX只是一个通用名称,意味着你有多个分区)。可能最简单的方法是用它做这样的事情

public string CekValidData(string data)
{
    SqlConnection Conn = DataSetting.GetSqlConnection();
    SqlCommand Comm = new SqlCommand();
    try
    {
       Conn.Open();
       string paramData = ParseData(data);
       string sql = @"select NamaDivisi from Divisi where NamaDivisi IN('" + paramData + "')";
       Comm = new SqlCommand(sql, Conn);
       data = Convert.ToString(Comm.ExecuteScalar());
    }
    finally
    {
       Conn.Close();
       Conn.Dispose();
    }
    return data;
}

private string ParseData(string data)
{
    return data.Replace(";", "','");
}

没试过,但希望你明白这个想法。无论哪种方式,请为自己的利益,研究一下在c#中处理sql连接的最佳方法是什么,以及如何防止SQL注入。