【发布时间】:2020-10-10 05:58:21
【问题描述】:
今天我想编写一个代码来扫描用户的“文档”文件夹中的所有文件,获取文本和文件名并将它们放入数据库(就像某种测试我是否可以这样做,而不是用于获取数据)。但是,如果它将内容插入数据库,我的程序会说我的文档文件夹中的文件中的文本存在语法错误。
我的代码:
using System;
using MySql.Data.MySqlClient;
using System.IO;
namespace HelloWorld
{
class Program
{
static void
Main(string[] args)
{
Console.WriteLine("Getting Connection ...");
var datasource = @"localhost";//your server
var database = "database"; //your database name
var username = "username"; //username of server to connect
var password = "password"; //password
//your connection string
string connStr = $"Server={datasource};Database={database};Uid={username};Pwd={password}";
//create instanace of database connection
using (var conn = new MySqlConnection(connStr))
{
try
{
Console.WriteLine("Openning Connection ...");
//open connection
conn.Open();
Console.WriteLine("Connection successful!");
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.Message);
}
string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var txtFiles = Directory.EnumerateFiles(path, "*.*");
foreach (string currentFile in txtFiles)
{
string currentfile_txt = File.ReadAllText(currentFile);
var stm = $"INSERT INTO file_contents(File_Name, File_Content) VALUES ({currentFile}, {currentfile_txt});";
var cmd = new MySqlCommand(stm, conn);
cmd.ExecuteNonQuery();
}
}
}
}
}
但是如果我运行它,它会给我这个错误:
未处理的异常。 MySql.Data.MySqlClient.MySqlException (0x80004005):您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的 ':\Users\49176\Documents\aaa.txt, )' 附近使用正确的语法
它似乎将 aaa.txt 中的文本作为 SQL 代码处理。 我该如何改变呢? (顺便说一句:在txt文件中只是一些随机字母)
希望你能帮到我
【问题讨论】:
-
你应该切换到带参数的prepared statements见stackoverflow.com/questions/16167924/…,这样你的数据输入正确和sql注入证明
-
如果回答满意,就采纳吧。没有答案的问题不会带来价值,因为其他用户永远不知道答案是否正确,他们可以将其用于他们的目的。