【发布时间】:2016-07-29 21:49:30
【问题描述】:
我正在使用带有 sqlCommand 字符串的 System.Data.SQLite,这会按预期保存一个 Guid。
使用代码我奇怪的字符保存而不是 Guid,如下所示:ù“•»I={E±gÒ §[,
似乎生成奇怪字符的代码(如 SQLite Administrator 中所示):
...
// Constructor in Class
public ProfileUserAssignment()
{
ID = Guid.NewGuid();
_IsNew = true;
SetDefaults();
}
...
...
// Save Method in same class
public ProfileUserAssignment Save()
{
if (_IsNew)
{
Made4Print.SQLite.Repository.Add(this);
}
else
{
Made4Print.SQLite.Repository.Update(this);
}
return Get(this.ID);
}
...
按预期保存 Guid 的代码:
// Create Administrator User
using (System.Data.SQLite.SQLiteConnection connection = new System.Data.SQLite.SQLiteConnection(Made4Print.SQLite.GetProvider().ConnectionString))
{
connection.Open();
using (System.Data.SQLite.SQLiteCommand sqlCommand = new System.Data.SQLite.SQLiteCommand(connection))
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("INSERT INTO [Users] ( ");
sqlQuery.Append("[ID], ");
sqlQuery.Append("[FirstName], ");
sqlQuery.Append("[LastName], ");
sqlQuery.Append("[Username], ");
sqlQuery.Append("[Password], ");
sqlQuery.Append("[Email], ");
sqlQuery.Append("[Phone], ");
sqlQuery.Append("[MobilePhone], ");
sqlQuery.Append("[LoginEnabledPropertyValue], ");
sqlQuery.Append("[SendEmailsPropertyValue], ");
sqlQuery.Append("[SystemPropertyValue] ");
sqlQuery.Append(" ) VALUES ( ");
sqlQuery.Append("'2bdcac4d-019f-4213-b635-86ae8f7d757e', ");
sqlQuery.Append("'Administrator', ");
sqlQuery.Append("'User', ");
sqlQuery.Append("'xxxxx', ");
sqlQuery.Append("'" + Security.HashPassword("xxxxx") + "', ");
sqlQuery.Append("'', ");
sqlQuery.Append("'', ");
sqlQuery.Append("'', ");
sqlQuery.Append("1, ");
sqlQuery.Append("1, ");
sqlQuery.Append("1 ");
sqlQuery.Append(" ) ");
sqlCommand.CommandText = sqlQuery.ToString();
sqlCommand.ExecuteNonQuery();
}
connection.Close();
}
使用 SQLite Administrator,我在一个表中看到了预期的 Guid,或者在另一个表中看到了字符(没有尝试在一个表中同时进行)
发现新信息:
我刚刚在以下位置找到了这个:http://www.connectionstrings.com/sqlite
将 GUID 存储为文本 通常,GUID 以二进制格式存储。使用此连接字符串将 GUID 存储为文本。
数据源=文件名;版本=3;BinaryGUID=False;
有这方面的专家吗?
【问题讨论】:
-
我在构造函数中使用 ID = Guid.NewGuid(),我假设它试图保存 Guid 对象而不是 Guid 字符串值?如果这有意义吗?
-
调用的代码sn-p是什么?在代码版本中可以调用 Guid.NewGuid().ToString() 代替吗?
-
请向我们展示所涉及的代码,以及文本“使用 SQLite 管理员,我看到了预期的 Guid 或字符?”,这是一个问题,还是您真的看到了预期的结果?
-
@GrayWizardx:添加了一些代码,我可以使用字符串作为 ID,还没有考虑过。
-
@Lasse V. Karlsen :不,这是一个声明,我都看到了。