Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL(lite)用格式替换所有列中的字符串值_Sql_Sqlite_String Formatting - Fatal编程技术网

SQL(lite)用格式替换所有列中的字符串值

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

我正在尝试使用具有特定值的列URL更新SQLite数据库。旧的url格式是,新的是。 我试图做的是将url替换为新格式,但保留旧url中“Q”参数的值。对于所有列,实现这一目标的最快/最佳方法是什么?我不知道如何使用SQL查询来实现这一点。

您想要SQL吗

基本上,您读取表,搜索关键字,替换它,然后将数据写回数据库

假设您的数据库名为mydatabase.db,则您的代码看起来像以下未经测试的代码:

    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值?