本文整理汇总了C#中Mono.Data.Sqlite.SqliteConnection.QueryReader方法的典型用法代码示例。如果您正苦于以下问题:C# SqliteConnection.QueryReader方法的具体用法?C# SqliteConnection.QueryReader怎么用?C# SqliteConnection.QueryReader使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mono.Data.Sqlite.SqliteConnection
的用法示例。
在下文中一共展示了SqliteConnection.QueryReader方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: InfiniteSigns_SignDataImport
public void InfiniteSigns_SignDataImport(
ProtectionManager protectionManager,
out int importedSigns, out int protectFailures
)
{
string sqliteDatabaseFilePath = Path.Combine(TShock.SavePath, "signs.sqlite");
if (!File.Exists(sqliteDatabaseFilePath))
throw new FileNotFoundException("Sqlite database file not found.", sqliteDatabaseFilePath);
IDbConnection dbConnection = null;
try {
switch (TShock.Config.StorageType.ToLower()) {
case "mysql":
string[] host = TShock.Config.MySqlHost.Split(':');
dbConnection = new MySqlConnection(string.Format(
"Server={0}; Port={1}; Database={2}; Uid={3}; Pwd={4};",
host[0],
host.Length == 1 ? "3306" : host[1],
TShock.Config.MySqlDbName,
TShock.Config.MySqlUsername,
TShock.Config.MySqlPassword
));
break;
case "sqlite":
dbConnection = new SqliteConnection(
string.Format("uri=file://{0},Version=3", sqliteDatabaseFilePath)
);
break;
default:
throw new NotImplementedException("Unsupported database.");
}
importedSigns = 0;
protectFailures = 0;
using (QueryResult reader = dbConnection.QueryReader(
"SELECT X, Y, Account, Text FROM Signs WHERE WorldID = @0", Main.worldID)
) {
while (reader.Read()) {
int rawX = reader.Get<int>("X");
int rawY = reader.Get<int>("Y");
string rawAccount = reader.Get<string>("Account");
string rawText = reader.Get<string>("Text");
if (!TerrariaUtils.Tiles.IsValidCoord(rawX, rawY))
continue;
// TSPlayer.All means that the sign must not be protected at all.
TSPlayer owner = TSPlayer.All;
if (!string.IsNullOrEmpty(rawAccount)) {
User tUser = TShock.Users.GetUserByName(rawAccount);
if (tUser != null) {
owner = new TSPlayer(0);
owner.User.ID = tUser.ID;
owner.User.Name = tUser.Name;
owner.Group = TShock.Groups.GetGroupByName(tUser.Group);
} else {
// The original owner of the sign does not exist anymore, so we just protect it for the server player.
owner = TSPlayer.Server;
}
}
DPoint signLocation = new DPoint(rawX, rawY);
int signIndex = -1;
for (int i = 0; i < Main.sign.Length; i++) {
Sign sign = Main.sign[i];
if (sign == null || sign.x != signLocation.X || sign.y != signLocation.Y)
continue;
signIndex = i;
break;
}
if (signIndex == -1) {
Tile signTile = TerrariaUtils.Tiles[signLocation];
if (!signTile.active() || (signTile.type != (int)BlockType.Sign && signTile.type != (int)BlockType.Tombstone)) {
this.PluginTrace.WriteLineWarning(string.Format(
"The sign data on the location {0} could not be imported because no corresponding sign does exist in the world.",
signLocation
));
continue;
}
for (int i = 0; i < Main.sign.Length; i++) {
Sign sign = Main.sign[i];
if (sign == null)
continue;
Main.sign[i] = new Sign() {
x = rawX,
y = rawY,
text = rawText
};
signIndex = i;
break;
}
} else {
Sign.TextSign(signIndex, rawText);
//.........这里部分代码省略.........
示例2: InfiniteChests_ChestDataImport
public void InfiniteChests_ChestDataImport(
ProtectionManager protectionManager,
out int importedChests, out int overwrittenChests, out int protectFailures
)
{
string sqliteDatabaseFilePath = Path.Combine(TShock.SavePath, "chests.sqlite");
if (!File.Exists(sqliteDatabaseFilePath))
throw new FileNotFoundException("Sqlite database file not found.", sqliteDatabaseFilePath);
IDbConnection dbConnection = null;
try {
switch (TShock.Config.StorageType.ToLower()) {
case "mysql":
string[] host = TShock.Config.MySqlHost.Split(':');
dbConnection = new MySqlConnection(string.Format(
"Server={0}; Port={1}; Database={2}; Uid={3}; Pwd={4};",
host[0],
host.Length == 1 ? "3306" : host[1],
TShock.Config.MySqlDbName,
TShock.Config.MySqlUsername,
TShock.Config.MySqlPassword
));
break;
case "sqlite":
dbConnection = new SqliteConnection(
string.Format("uri=file://{0},Version=3", sqliteDatabaseFilePath)
);
break;
default:
throw new NotImplementedException("Unsupported database.");
}
importedChests = 0;
overwrittenChests = 0;
protectFailures = 0;
using (QueryResult reader = dbConnection.QueryReader(
"SELECT X, Y, Account, Flags, Items FROM Chests WHERE WorldID = @0", Main.worldID)
) {
while (reader.Read()) {
int rawX = reader.Get<int>("X");
int rawY = reader.Get<int>("Y");
string rawAccount = reader.Get<string>("Account");
InfiniteChestsChestFlags rawFlags = (InfiniteChestsChestFlags)reader.Get<int>("Flags");
string rawItems = reader.Get<string>("Items");
if (!TerrariaUtils.Tiles.IsValidCoord(rawX, rawY))
continue;
DPoint chestLocation = new DPoint(rawX, rawY);
if (!TerrariaUtils.Tiles[chestLocation].active() || TerrariaUtils.Tiles[chestLocation].type != (int)BlockType.Chest) {
this.PluginTrace.WriteLineWarning(string.Format(
"The chest data on the location {0} could not be imported because no corresponding chest does exist in the world.",
chestLocation
));
continue;
}
// TSPlayer.All means that the chest must not be protected at all.
TSPlayer owner = TSPlayer.All;
if (!string.IsNullOrEmpty(rawAccount)) {
User tUser = TShock.Users.GetUserByName(rawAccount);
if (tUser != null) {
owner = new TSPlayer(0);
owner.User.ID = tUser.ID;
owner.User.Name = tUser.Name;
owner.Group = TShock.Groups.GetGroupByName(tUser.Group);
} else {
// The original owner of the chest does not exist anymore, so we just protect it for the server player.
owner = TSPlayer.Server;
}
}
int chestIndex = Chest.FindChest(rawX, rawY);
if (chestIndex == -1) {
chestIndex = Chest.CreateChest(rawX, rawY);
} else {
this.PluginTrace.WriteLineWarning(string.Format("The items of the chest {0} were overwritten.", chestLocation));
overwrittenChests++;
}
Chest tChest = Main.chest[chestIndex];
int[] itemArgs = new int[60];
string[] itemData = rawItems.Split(',');
for (int i = 0; i < 120; i++)
itemArgs[i] = int.Parse(itemData[i]);
for (int i = 0; i < 40; i++) {
tChest.item[i] = new Item();
tChest.item[i].netDefaults(itemArgs[i * 3]);
tChest.item[i].prefix = (byte)itemArgs[i * 3 + 2];
tChest.item[i].stack = itemArgs[i * 3 + 1];
}
importedChests++;
if (owner != TSPlayer.All) {
try {
ProtectionEntry protection = protectionManager.CreateProtection(owner, chestLocation, true, false, false);
protection.IsSharedWithEveryone = (rawFlags & InfiniteChestsChestFlags.PUBLIC) != 0;
//.........这里部分代码省略.........
示例3: ImportToMysql
internal static void ImportToMysql()
{
string sql = Path.Combine(EBDB);
if (File.Exists(EBDB))
{
string[] baninfo = new string[5];
DBSqlite = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
var DBQuery = DBSqlite.QueryReader("SELECT * FROM BannedIP");
while (DBQuery.Read())
{
baninfo[0] = DBQuery.Get<string>("IP");
baninfo[1] = DBQuery.Get<int>("BanDate").ToString();
baninfo[2] = DBQuery.Get<int>("UnbanDate").ToString();
baninfo[3] = DBQuery.Get<string>("BannedBy");
baninfo[4] = DBQuery.Get<string>("Reason");
RunExec("INSERT INTO BannedIP (IP, BanDate, UnbanDate, BannedBy, Reason) VALUES ('" + baninfo[0] + "', '" + int.Parse(baninfo[1]) + "', '" + int.Parse(baninfo[2]) + "', '" + baninfo[3] + "', '" + baninfo[4] + "')");
}
DBSqlite.Dispose();
DBQuery.Dispose();
DBQuery = DBSqlite.QueryReader("SELECT * FROM BannedPlayer");
while (DBQuery.Read())
{
baninfo[0] = DBQuery.Get<string>("Player");
baninfo[1] = DBQuery.Get<int>("BanDate").ToString();
baninfo[2] = DBQuery.Get<int>("UnbanDate").ToString();
baninfo[3] = DBQuery.Get<string>("BannedBy");
baninfo[4] = DBQuery.Get<string>("Reason");
RunExec("INSERT INTO BannedPlayer (Player, BanDate, UnbanDate, BannedBy, Reason) VALUES ('" + baninfo[0] + "', '" + int.Parse(baninfo[1]) + "', '" + int.Parse(baninfo[2]) + "', '" + baninfo[3] + "', '" + baninfo[4] + "')");
}
DBSqlite.Dispose();
DBQuery.Dispose();
DBQuery = DBSqlite.QueryReader("SELECT * FROM MutedPlayer");
while (DBQuery.Read())
{
baninfo[0] = DBQuery.Get<string>("Player");
baninfo[1] = DBQuery.Get<int>("MuteDate").ToString();
baninfo[2] = DBQuery.Get<int>("UnmuteDate").ToString();
baninfo[3] = DBQuery.Get<string>("BannedBy");
baninfo[4] = DBQuery.Get<string>("MutedBy");
RunExec("INSERT INTO MutedPlayer (Player, MuteDate, UnmuteDate, MutedBy, Reason) VALUES ('" + baninfo[0] + "', '" + int.Parse(baninfo[1]) + "', '" + int.Parse(baninfo[2]) + "', '" + baninfo[3] + "', '" + baninfo[4] + "')");
}
DBSqlite.Dispose();
DBSqlite.Close();
DBQuery.Dispose();
File.Delete(EBDB);
}
}