我从Syn123的回答改编的SQL和这里是我到目前为止有:
SELECT c.TABLE_NAME, c.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS AS c
INNER JOIN INFORMATION_SCHEMA.Tables AS t ON t.TABLE_NAME = c.TABLE_NAME
WHERE (c.DATA_TYPE IN ('char', 'nchar', 'varchar', 'nvarchar', 'text', 'ntext')) AND (t.TABLE_TYPE = 'TABLE')
我遇到的问题是,我不能做子查询与SQL CE,因此可以”从结果集中选择。如果您有权访问.MDF数据库文件,则可以编写一个小型控制台应用程序,以使用上述SQL返回的集合搜索特定的关键字。您需要一种方法来创建动态SQL,并且SQL CE不支持EXEC,所以这很困难,而且很可能不可能。
编辑:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlServerCe;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SQLCESearch
{
class Program
{
static void Main(string[] args)
{
SearchText("Nancy");
Console.ReadKey();
}
private static void SearchText(string searchText)
{
string connStr = "Data Source=Northwind40.sdf;Persist Security Info=False;";
DataTable dt = new DataTable();
try
{
string sql = "SELECT c.TABLE_NAME, c.COLUMN_NAME ";
sql += "FROM INFORMATION_SCHEMA.COLUMNS AS c ";
sql += "INNER JOIN INFORMATION_SCHEMA.Tables AS t ON t.TABLE_NAME = c.TABLE_NAME ";
sql += "WHERE (c.DATA_TYPE IN ('char', 'nchar', 'varchar', 'nvarchar', 'text', 'ntext')) AND (t.TABLE_TYPE = 'TABLE') ";
SqlCeDataAdapter da = new SqlCeDataAdapter(sql, connStr);
da.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
string dynSQL = "SELECT [" + dr["COLUMN_NAME"] + "]";
dynSQL += " FROM [" + dr["TABLE_NAME"] + "]";
dynSQL += " WHERE [" + dr["COLUMN_NAME"] + "] LIKE '%" + searchText + "%'";
DataTable result = new DataTable();
da = new SqlCeDataAdapter(dynSQL, connStr);
da.Fill(result);
foreach (DataRow r in result.Rows)
{
Console.WriteLine("Table Name: " + dr["TABLE_NAME"]);
Console.WriteLine("Column Name: " + dr["COLUMN_NAME"]);
Console.WriteLine("Value: " + r[0]);
}
}
}
catch (Exception e)
{
Console.Write(e.Message);
}
}
}
}
有,将打印出任何表/列包含文本的价值真正快速和肮脏的控制台应用程序。您可以调整它以适应您的需求。我希望这有帮助。
您使用的是哪个版本的SQL Server CE? – 2013-03-04 20:26:30
你是如何“试图寻找一张桌子”?你是什么“不见”?这些链接中的每一个似乎都按照你的要求去做;你有尝试过吗?发生了什么? SQL CE本身应该能够做你想做的事情,为什么你必须通过WebMatrix? – 2013-03-04 20:31:41
@CameronTinker我希望这回答你的问题,但我使用WebMatrix 2,如果有帮助。 – VoidKing 2013-03-04 20:31:51