SQL(lite)用格式替换所有列中的字符串值
我正在尝试使用具有特定值的列URL更新SQLite数据库。旧的url格式是,新的是。 我试图做的是将url替换为新格式,但保留旧url中“Q”参数的值。对于所有列,实现这一目标的最快/最佳方法是什么?我不知道如何使用SQL查询来实现这一点。您想要SQL吗 基本上,您读取表,搜索关键字,替换它,然后将数据写回数据库 假设您的数据库名为mydatabase.db,则您的代码看起来像以下未经测试的代码:SQL(lite)用格式替换所有列中的字符串值,sql,sqlite,string-formatting,Sql,Sqlite,String Formatting,我正在尝试使用具有特定值的列URL更新SQLite数据库。旧的url格式是,新的是。 我试图做的是将url替换为新格式,但保留旧url中“Q”参数的值。对于所有列,实现这一目标的最快/最佳方法是什么?我不知道如何使用SQL查询来实现这一点。您想要SQL吗 基本上,您读取表,搜索关键字,替换它,然后将数据写回数据库 假设您的数据库名为mydatabase.db,则您的代码看起来像以下未经测试的代码: using Devart.Data.SQLite; public void Co
using Devart.Data.SQLite;
public void Convert()
{
using (var conn = new SQLiteConnection("DataSource=mydatabase.db"))
{
var boek = "//boek//";
var boekwinkel = "//boekwinkel//";
var boek_len = boek.Length;
var table = new DataTable();
var sqlCmd = "SELECT * FROM TableName1;";
conn.Open();
// Read the data into the DataTable:
using (var cmd = new SQLiteCommand(sqlCmd, conn))
{
// The DataTable is ReadOnly!
table.Load(cmd.ExecuteReader());
}
// Use a new SQLiteCommand to write the data.
using (var cmd = new SQLiteCommand("UPDATE TableName1 SET URL=@NEW_URL WHERE URL=@URL;", conn))
{
cmd.Parameters.Add("@URL", SQLiteType.Text, 20);
cmd.Parameters.Add("@NEW_URL", SQLiteType.Text, 20);
foreach (DataRow row in table.Rows)
{
var url = String.Format("{0}", row["URL"]).Trim();
cmd.Parameters["@URL"].SQLiteValue = row["URL"];
if (!String.IsNullOrEmpty(url))
{
var index = url.IndexOf(boek);
if (-1 < index)
{
var first = url.Substring(0, index);
var middle = boekwinkel;
var last = url.Substring(index + boek_len);
var new_url = String.Format("{0}{1}{2}&oa=true&searchin=taal&taal=dut", first, middle, last);
// Place a break point after String.Format.
// Make sure the information being written is correct.
cmd.Parameters["@NEW_URL"].SQLiteValue = new_url;
cmd.ExecuteNonQuery();
}
}
}
}
conn.Close();
}
}
您使用什么来读取/编辑数据?Visual Studio代码?通过一些C代码和数据库更新会很简单。我正在使用一个名为DB Browser for SQLite的工具,使用C代码执行此操作会花费太多时间,而且由于此工具允许使用SQL查询,我认为这是一个很好的解决方案。请添加目标表和源表的摘录,好吗?我非常感兴趣的是,是否有其他专栏使它独一无二,或者这并不重要。那么,一个简单的截断表也可以做到这一点。如何准确地从旧URL中提取Q值?