Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 server 编写SQL OleDbCommand以将数据从SqlServer导入Access数据库_Sql Server_Ms Access_Import_Oledbconnection_Oledbcommand - Fatal编程技术网

Sql server 编写SQL OleDbCommand以将数据从SqlServer导入Access数据库

Sql server 编写SQL OleDbCommand以将数据从SqlServer导入Access数据库,sql-server,ms-access,import,oledbconnection,oledbcommand,Sql Server,Ms Access,Import,Oledbconnection,Oledbcommand,我有以下代码: ADOX.Catalog cat = new ADOX.Catalog(); string pathToNewAccessDatabase = "Data Source=D:\\Data\\NewMDB.mdb"; cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" + pathToNewAccessDatabase + ";Jet OLEDB:Engine Type=5"); System.Data.OleDb.OleDbConne

我有以下代码:

ADOX.Catalog cat = new ADOX.Catalog();
string pathToNewAccessDatabase = "Data Source=D:\\Data\\NewMDB.mdb";

cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" + pathToNewAccessDatabase + ";Jet OLEDB:Engine Type=5");

System.Data.OleDb.OleDbConnection AccessConn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " + pathToNewAccessDatabase);

AccessConn.Open();
System.Data.OleDb.OleDbCommand AccessCommand = new System.Data.OleDb.OleDbCommand("SELECT * INTO [ReportFile] FROM [Data Source=server_path; Initial Catalog=database_name; User Id=user_name; Password=pass_word;Trusted_Connection=False].[dbo.DataSourceTable]", AccessConn);

AccessCommand.ExecuteNonQuery();
AccessConn.Close();
我想从
SQL SERVER
选择进入
ACCESS
数据库


此外,如果密码包含
[
字符,如何转义该字符?

我建议先建立到SQL server的SQLConnection,并将所需数据查询到DataTable中

using (SqlConnection conn = new SqlConnection("yourConnectionString"))
{
    using (SqlCommand comm = new SqlCommand("Select columns from targetTable", conn))
    {                    
        SqlDataReader reader = comm.ExecuteReader();
        DataTable tbl = new DataTable();
        tbl.Load(reader);
    }
}
在datatatable中包含数据后,通过循环数据为insert命令创建查询

string insertCommandString = string.Empty;

for (int row = 0; row < tbl.Rows.Count; row++)
{
    insertCommandString = "Insert into yourTableName(yourColumnNames) values(";
    for (int column = 0; column < tbl.Columns.Count; column++)
    {
        if(tbl.Columns[column].DataType == typeof(String))
        {
            insertCommandString += "'" + tbl.Rows[row][column].ToString() + "'";
        }
        else
        {
            insertCommandString += tbl.Rows[row][column].ToString();
        }

        if (column < tbl.Columns.Count - 1)
        {
            insertCommandString += ",";
        }
   }

   insertCommandString += ")";

   System.Data.OleDb.OleDbCommand AccessCommand = new System.Data.OleDb.OleDbCommand(insertCommandString, AccessConn);
   AccessCommand.ExecuteNonQuery();
 }
string insertCommandString=string.Empty;
对于(int row=0;row

您不应该从密码中转义任何字符。

我很可能直接引用SQL Server或Access数据库,并使用一条SQL语句将其中一条更新为另一条:@Remou是的,您是对的,但为了使其正常工作,我必须在SQL Server中进行一些更改。我有点担心我可能会搞砸某些事情(喜欢表演)