C# 如何使用Insert语句为MySql中选择的记录创建脚本?
我需要为我在mysql表中选择的记录创建一个带有Insert语句的脚本文件 例如,当我从emp中选择*时,其中empid=5,并假设我得到10条记录作为结果。 现在我应该创建一个脚本文件,其中包含这10条记录的insert语句到emp表 我正在使用C作为代码隐藏C# 如何使用Insert语句为MySql中选择的记录创建脚本?,c#,mysql,C#,Mysql,我需要为我在mysql表中选择的记录创建一个带有Insert语句的脚本文件 例如,当我从emp中选择*时,其中empid=5,并假设我得到10条记录作为结果。 现在我应该创建一个脚本文件,其中包含这10条记录的insert语句到emp表 我正在使用C作为代码隐藏 怎么做?现在你的问题有道理了。 您可以在一个查询中完成 INSERT INTO B.emp SELECT * FROM A.emp WHERE empid = 5 它与Norhtwind.Customer表一起工作 using
怎么做?现在你的问题有道理了。 您可以在一个查询中完成
INSERT INTO B.emp SELECT * FROM A.emp WHERE empid = 5
它与Norhtwind.Customer表一起工作
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Common;
using System.Data;
using System.Data.Odbc;
using System.IO;
using System.Threading;
namespace DataAccessLayer
{
public class DBManager
{
//FILE LOGGER METHOD
public void SqlLogger(string SqlText)
{ if (!File.Exists("SQL.txt"))
{ using (StreamWriter sw = new StreamWriter("SQL.txt"))
{ sw.Flush();
sw.Close();
sw.Dispose();
}
}
using (StreamWriter sw = File.AppendText("SQL.txt"))
{ sw.WriteLine(SqlText);
sw.WriteLine(" ");
sw.Flush();
sw.Close();
sw.Dispose();
}
}
// DATABASE METHODS
public static OdbcConnection g_con = new OdbcConnection("Dsn=wsodbc1");
public DBManager()
{
}
public OdbcConnection GetConnection()
{ try { g_con.Open(); }
catch (Exception ex) { }
return g_con;
}
public OdbcCommand GetCommand(string Query)
{
OdbcCommand cmd = new OdbcCommand(Query);
cmd.Connection = GetConnection();
return cmd;
}
public void ExeCommand(string Query)
{
OdbcCommand cmd = GetCommand(Query);
cmd.ExecuteNonQuery();
}
public OdbcDataReader GetReader(string Query)
{ return GetCommand(Query).ExecuteReader(); }
// SQL INSERT GENERATOR
public void GenerateSql(string tablename)
{
File.Delete("SQL.txt");
List<string> cols = new List<string>();
string ColNames;
OdbcDataReader reader = GetReader("SELECT * FROM Customers ");
DataTable schemaTable = reader.GetSchemaTable();
foreach (DataRow row in schemaTable.Rows)
{ foreach (DataColumn column in schemaTable.Columns)
{
if (column.ColumnName.Equals("ColumnName")) cols.Add(row[column].ToString().ToUpper());
}
}
ColNames = string.Join(",", cols.ToArray());
while (reader.Read())
{
SqlLogger("INSERT INTO " + tablename + " (" + ColNames + ") VALUES (" + Row_Values(reader) + ")");
}
}
public string Row_Values(OdbcDataReader r)
{
List<string> colsVals = new List<string>();
for (int i = 0; i < r.FieldCount; i++ )
{
if (r[i].GetType().ToString().Equals("System.String"))
{
if (r[i] == null)
{
colsVals.Add("NULL");
}
else
{
colsVals.Add("'" + r[i].ToString().Replace("'","''").Replace(",","-") + "'");
}
}
else if (r[i].GetType().ToString().Equals("System.DBNull"))
{
colsVals.Add("NULL");
}
else
{
if (r[i] == null)
{
colsVals.Add("NULL");
}
else
{
var VAL = r[i].ToString();
colsVals.Add("'" + VAL.ToString().Replace("'", "''").Replace(",", "-") + "'");
}
}
}
return string.Join(",", colsVals.ToArray());
}
}
}
因为没有人知道要插入什么,所以最好给出一个表、数据和这些插入查询的示例。@Schrapanel上校,我有两个数据库A和B。这两个数据库都有相同的表架构。所以我想从一个表中进行选择,然后插入到另一个数据库中类似的表中。为此,我需要为任何选定的记录创建一个插入脚本。在这里编写脚本是为了我的项目请求。当然,您知道,如果两个表都在同一台服务器上,您可以从a插入到B SELECT*中,对吗?或者对该查询进行改进
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Common;
using System.Data;
using System.Data.Odbc;
using System.IO;
using System.Threading;
namespace DataAccessLayer
{
public class DBManager
{
//FILE LOGGER METHOD
public void SqlLogger(string SqlText)
{ if (!File.Exists("SQL.txt"))
{ using (StreamWriter sw = new StreamWriter("SQL.txt"))
{ sw.Flush();
sw.Close();
sw.Dispose();
}
}
using (StreamWriter sw = File.AppendText("SQL.txt"))
{ sw.WriteLine(SqlText);
sw.WriteLine(" ");
sw.Flush();
sw.Close();
sw.Dispose();
}
}
// DATABASE METHODS
public static OdbcConnection g_con = new OdbcConnection("Dsn=wsodbc1");
public DBManager()
{
}
public OdbcConnection GetConnection()
{ try { g_con.Open(); }
catch (Exception ex) { }
return g_con;
}
public OdbcCommand GetCommand(string Query)
{
OdbcCommand cmd = new OdbcCommand(Query);
cmd.Connection = GetConnection();
return cmd;
}
public void ExeCommand(string Query)
{
OdbcCommand cmd = GetCommand(Query);
cmd.ExecuteNonQuery();
}
public OdbcDataReader GetReader(string Query)
{ return GetCommand(Query).ExecuteReader(); }
// SQL INSERT GENERATOR
public void GenerateSql(string tablename)
{
File.Delete("SQL.txt");
List<string> cols = new List<string>();
string ColNames;
OdbcDataReader reader = GetReader("SELECT * FROM Customers ");
DataTable schemaTable = reader.GetSchemaTable();
foreach (DataRow row in schemaTable.Rows)
{ foreach (DataColumn column in schemaTable.Columns)
{
if (column.ColumnName.Equals("ColumnName")) cols.Add(row[column].ToString().ToUpper());
}
}
ColNames = string.Join(",", cols.ToArray());
while (reader.Read())
{
SqlLogger("INSERT INTO " + tablename + " (" + ColNames + ") VALUES (" + Row_Values(reader) + ")");
}
}
public string Row_Values(OdbcDataReader r)
{
List<string> colsVals = new List<string>();
for (int i = 0; i < r.FieldCount; i++ )
{
if (r[i].GetType().ToString().Equals("System.String"))
{
if (r[i] == null)
{
colsVals.Add("NULL");
}
else
{
colsVals.Add("'" + r[i].ToString().Replace("'","''").Replace(",","-") + "'");
}
}
else if (r[i].GetType().ToString().Equals("System.DBNull"))
{
colsVals.Add("NULL");
}
else
{
if (r[i] == null)
{
colsVals.Add("NULL");
}
else
{
var VAL = r[i].ToString();
colsVals.Add("'" + VAL.ToString().Replace("'", "''").Replace(",", "-") + "'");
}
}
}
return string.Join(",", colsVals.ToArray());
}
}
}