标签: sql-server-ce

在数据库中保留大字符串的最佳方法是什么?(SQL Compact)

有问题的字符串将是(烹饪)食谱的描述字段,最大长度应该是99%的用户永远不会遇到的事情.nvarchar(4000)似乎可能太限制了.

SQL表中的列是否适合这个位置?在这样的字段中存储这样一个(可能)大的值是不对的,但也许不是吗?

不确定是否重要,但.NET 3.5很可能会使用LINQ2SQL.

编辑:使用VS Express数据库资源管理器创建表,它告诉我4000是nvarchar的最大大小(似乎没有列出varchar作为选项).这只是SQLCE的限制,并且表明我将不得不研究其他内容吗?

如果确实这是SQLCE的限制,是否有人有另一个推荐?对于宠物项目,我必须是免费的,最好是易于设置(最好是我和最终用户,但更重要的是,它很容易为最终用户设置).数据库将是本地的,性能不是太大的问题.

sql-server-ce

4
推荐指数
1
解决办法
3972
查看次数

选择新添加的Row - DataGridView和BindingSource

我正在向绑定到DataGridView的BindingSource添加一个新的Row

source.AddNew();
Run Code Online (Sandbox Code Playgroud)

在此之后,使用BindingSource获取新添加的行,在其排序时返回DataGridView中的下一行.

ROW "A"
ROW "B" <- myBindingSource.AddNew();
ROW "C"
Run Code Online (Sandbox Code Playgroud)

myBindingSource.Current给出ROW"C".(它成为DataGridView中的选定行)

我需要这个,因为我想只更新新添加的行

            DataRowView drv = (DataRowView)myBindingSource.Current;
            myTableAdapter.Update(drv.Row);
Run Code Online (Sandbox Code Playgroud)

而不是整个表.

            myTableAdapter.Update(myDataSet.myTable);
Run Code Online (Sandbox Code Playgroud)

而且,我想在插入后在DataGridView中选择这个新添加的行.

有可能吗?

c# datagridview bindingsource sql-server-ce winforms

4
推荐指数
1
解决办法
2万
查看次数

sql ce escape'(单引号)C#

我正在编写一些代码来存储数据库中的名称.我将名称限制为仅限于某些字符,但姓氏是一个挑战.由于有些人的名字中有单引号(例如O'Brian),我需要允许这个.所以我写了一个正则表达式替换来替换'with a',我认为应该使'a literal'.它可以替代它,但它仍然标志着字符串的结束,我得到了错误

解析查询时出错.[令牌行号= 1,令牌行offeset = 71,令牌错误= Brian]

我理解错误,单引号标记要输入的字符串的结尾,留下引号之外的其余字符串Brian.

我正在使用的代码:

Regex reg = new Regex("\'");
firstName = reg.Replace(firstName, "\\'");
lastName = reg.Replace(lastName, "\\'"):
Run Code Online (Sandbox Code Playgroud)

然后使用string.format构建select查询

sqlInsertObj.CommandText = string.Format("INSERT INTO childNameId (childFName, childLName) VALUES ('{0}', '{1}')", fName, lName);
 sqlInsertObj.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

这适用于任何条目,除非名称中有引号.

c# regex insert visual-studio-2010 sql-server-ce

4
推荐指数
1
解决办法
4655
查看次数

在SQL Server CE 4中使用GetUTCDate

考虑一个带有非可空列的SQL Server CE 4表:FooDate.目标是将当前的UTC日期时间作为默认值.

SQL Server Compact无法识别该功能.函数名称GetUTCDate.

该函数GetDate()按预期作为datetimeSQL Server Compact 4中的列的默认值.

GetUTCDate()在SQL Server CE 4中是否受支持?

替代文字

sql-server-ce webmatrix sql-server-ce-4

4
推荐指数
1
解决办法
1332
查看次数

C# - 从连接字符串获取文件路径

有没有在C#中现有的方法来提取一个代表一个字符串的文件路径ConnectionStringSqlCE .自卫队文件吗?我想检查文件是否在初始化时存在,如果文件已被修改则备份它.

示例连接字符串:

strConn = "Data Source=|DataDirectory|\dbAlias.sdf";
Run Code Online (Sandbox Code Playgroud)

c# connection-string sql-server-ce

4
推荐指数
3
解决办法
5691
查看次数

在没有Visual Studio Pro版本的情况下将SQL Server CE 4数据库转换为SQL Server 2008 Express

我主要是一个前端开发人员,但也做了很多CMS配置.我有一个使用SQL Server CE 4在开发环境中设置的CMS.我想使用SQL Server Express 2008将其移植到生产环境中.但是,我在将数据库从CE迁移到2008时遇到了很大的困难.

我已经尝试了Webmatrix,但它似乎只是默默地超时并锁定目标数据库(数据不是很大 - 大约50Mb).我也尝试了这个:http://sqlcetoolbox.codeplex.com/但是它需要命令行技能(我只是没有 - 我已经尝试过但不知道我在做什么)或Visual Studio Pro版本 - 大约800英镑.它使用SQL Server Management Studio,但仅适用于SQLCE3.5,而不是4.0.我无法证明Visual Studio Pro的价格可以将免费提供的数据库格式转换为另一种免费的数据库格式.

有没有人知道没有命令行技能或完整VS许可证的人可以进行这种转换?

感谢任何帮助人员 - 我花了这么多时间在这上面:(

database-migration sql-server-2008 sql-server-ce

4
推荐指数
1
解决办法
4615
查看次数

EF entity.attach不起作用

我有一个从db检索的实体,如下所示

using ( var ctx = new Mycontext() )
   return ctx.MyGroups.First( // query );
Run Code Online (Sandbox Code Playgroud)

这绑定到UI并更新用户保存操作,如下所示

using ( var ctx = new Mycontext() )
{
    ctx.MyGroups.Attach(o); // verified object o is updated 
    ctx.SaveChanges();

}
Run Code Online (Sandbox Code Playgroud)

但是db没有更新

环境是.net 4.0,db是sql compact 4

什么可能缺失/错误的任何帮助?

.net c# entity-framework sql-server-ce

4
推荐指数
1
解决办法
2500
查看次数

如何以编程方式确定SQL Server CE数据库中是否存在表?

回到我的.sdf文件中只有一个表时,这段代码运行正常:

const string sdfPath = @"\Program Files\duckbilled\Platypus.sdf";
string dataSource = string.Format("Data Source={0}", sdfPath);

if (!File.Exists(sdfPath))
{
    using (var engine = new SqlCeEngine(dataSource))
    {
        engine.CreateDatabase();
    }
    using (var connection = new SqlCeConnection(dataSource))
    {
        connection.Open();
        using (var command = new SqlCeCommand())
        {
            command.Connection = connection;
            command.CommandText =
                "CREATE TABLE Platydudes (Id int NOT NULL, BillSize smallint NOT NULL, Description nvarchar(255)";
            command.ExecuteNonQuery();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

...但现在我需要知道,不是数据库文件(Platypus.sdf)是否存在,而是该表/文件中是否存在特定的(例如Platydudes).有没有办法确定?

UPDATE

查询中的"IF NOT EXISTS"子句导致运行时异常.这段代码:

using (var connection = new …
Run Code Online (Sandbox Code Playgroud)

c# compact-framework windows-ce sql-server-ce windows-embedded-compact

4
推荐指数
1
解决办法
2万
查看次数

将SQL CE 4.0数据库迁移到Sql Azure的最佳方法

我有一个在VS2010中开发的旧数据库,我想迁移到SQL Azure.

我希望我可以将.sdf文件上传到SQL Azure,但找不到让它工作的方法.

我似乎无法在Management Studio 2008中打开.sdf文件(我得到"不兼容的数据库版本"),因此无法生成脚本的简单选项.

是否可以快速简便地完成迁移?

sql-server-ce azure-sql-database

4
推荐指数
1
解决办法
1590
查看次数

插入SQL Server CE数据库文件并返回插入的id

问题是:

我的查询

INSERT INTO TableName(val1,val2)values(1,2);
SELECT @@IDENTITY;
Run Code Online (Sandbox Code Playgroud)

当我在服务器资源管理器的运行查询中运行它时,我得到了正确的结果.

但是当我使用ExecuteScalar或者ExecuteDataTable我得到一个错误时,...查询返回null

public object ExecuteScalre(string Query, CommandType type) 
{ 
    OpenConnection(); 
    cmd.CommandText = Query; 
    cmd.CommandType = type; 

    object obj = null; 

    try 
    { 
        obj = cmd.ExecuteScalar(); 
    } 
    catch 
    { 
    } 
    finally 
    { 
        ReleaseResource(); 
    } 

    return obj; 
} 

public DataTable ExecuteDataTable(string Query, CommandType type)
{
    OpenConnection();
    cmd.CommandText = Query;
    cmd.CommandType = type;
    DataTable dt = new DataTable();
    dataAdaptor = new SqlCeDataAdapter(cmd);

    try
    {
        dataAdaptor.Fill(dt);
    }
    catch
    {
    }
    finally
    {
        ReleaseResource(); …
Run Code Online (Sandbox Code Playgroud)

c# sql-server-ce

4
推荐指数
1
解决办法
2028
查看次数