2010-01-26 76 views
1

我有一个文本框和搜索按钮我试图寻找的文件名在数据库表和数据表显示它们...搜索数据库表,并把它放在一个DataTable

private void GetSearchResults(string machineID, string searchFileName) 
{ 
    DataTable dt = new DataTable(); 
    SqlConnection connection = new SqlConnection(); 
    connection.ConnectionString = ConfigurationManager.ConnectionStrings["SumooHAgentDBConnectionString"].ConnectionString; 
    connection.Open(); 
    SqlCommand sqlCmd = new SqlCommand("SELECT FileID, BuFileName FROM BackedUpFiles WHERE BuFileName Like '%@searchFileName%' AND [email protected]", connection); 
    SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd); 

    sqlCmd.Parameters.AddWithValue("@machineID", machineID); 

    sqlCmd.Parameters.AddWithValue("@searchFileName", searchFileName); 

    sqlDa.Fill(dt); 
} 

一切做工精细除了searchFileName没有在查询工作......

我试图把只是一个值来检查像

SELECT FileID, BuFileName FROM BackedUpFiles WHERE BuFileName Like '%b%' AND [email protected] 

和我得到的文件中的值...

有什么建议.. ??

+0

你试过在调试器步进通过?当函数被调用时searchFileName的值是多少? – 2010-01-26 19:19:50

+1

您还需要在'SqlConnection','SqlCommand'和'SqlDataAdapter'实例周围使用''块。 – 2010-01-26 19:30:19

回答

3

你有你的变量一个字符串,它讲的是数据库来搜索文本字符串内“@searchFileName”。要使用该变量的值,试试这个

'%' + @searchFileName + '%' 
1

这里有您需要什么:

private void GetSearchResults(string machineID, string searchFileName) 
{ 
    DataTable dt = new DataTable(); 
    SqlConnection connection = new SqlConnection(); 
    connection.ConnectionString = ConfigurationManager.ConnectionStrings["SumooHAgentDBConnectionString"].ConnectionString; 
    connection.Open(); 
    SqlCommand sqlCmd = new SqlCommand("SELECT FileID, BuFileName FROM BackedUpFiles WHERE BuFileName Like @searchFileName AND [email protected]", connection); 
    SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd); 

    sqlCmd.Parameters.AddWithValue("@machineID", machineID); 

    sqlCmd.Parameters.AddWithValue("@searchFileName", String.Format("%{0}%",searchFileName); 

    sqlDa.Fill(dt); 
} 

我以前碰到这个。出于某种原因,它不知道如何解析出引用中的参数。我想它认为这是一个文字。

+0

如果您的dbms每次都将其识别为变量,您将如何在数据库中搜索“@”? – 2010-01-26 19:30:08

1

试试这个在您选择

SELECT FileID, BuFileName FROM BackedUpFiles where REGEXP_LIKE(upper(BuFileName),UPPER(@searchFileName)) AND [email protected];