例如,如果我运行以下查询:
select * from table1
select * from table2
Run Code Online (Sandbox Code Playgroud)
并使用数据库适配器(C#)运行它我得到一个包含两个表的数据集.如何在SQL中定义结果表的名称?
我只能在SQL中执行此操作.我无法访问c#代码.
我正在做的项目差不多完成了.我正在加载.MDB文件,在DataGrid上显示内容并尝试在DataGrid上获取这些更改并将它们保存回.MDB文件.我还将创建一个函数,允许我从一个.MDB文件中获取表并将其保存到另一个.MDB文件中.当然,如果我无法弄清楚如何将更改保存回.MDB文件,我就无法做到这一点.
我对Google进行了广泛的研究,但我的问题没有答案.我认为自己是这个特定主题的初学者所以请不要让答案太复杂 - 我需要最简单的方法来编辑.MDB文件!请提供编程示例.
提前感谢您,如果您需要更多信息,请与我们联系.这是我可能不得不问这个话题的最后一件事......感谢上帝.
编辑:
我正在使用的.mdb是一个Microsoft Access数据库.(我甚至不知道有多个.mdb文件)
我知道我不能通过编写器或任何东西直接写入.MDB文件,但有没有办法可以生成一个带有DataSet信息的.MDB文件?或者只是一种方法,我可以将表添加到我已经加载到DataGrid的.MDB文件中.有办法!
同样,我需要一种在C#中以编程方式执行此操作的方法.
编辑:
好的,我的项目相当大,但我使用一个单独的类文件来处理所有数据库连接.我知道我的设计和来源非常邋,,但它完成了工作.我和互联网上的例子一样好.
请记住,我只是以另一种形式连接到DataGrid.如果你想要我的代码来自Datagrid表单,请告诉我(我不知道为什么你会需要它).DatabaseHandling.cs处理2个.MDB文件.所以你会看到两个数据集.我最终将使用它来从一个数据集中获取表并将它们放入另一个数据集中.我只需要弄清楚如何将这些值保存到.MDB文件中.
反正有没有这样做?必须有办法...
编辑:
从我研究和阅读的内容......我认为答案就在我的鼻子底下.使用"Update()"命令.现在虽然这是重新确保实际上有一个简单的方法,我仍然留下问题,我没有friggin线索如何使用此更新命令.
也许我可以像这样设置它:
Oledb.OledbConnection cn = new Oledb.OledbConnection();
cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Staff.mdb";
Oledb.OledbCommand cmd = new Oledb.OledbCommand(cn);
cmd.CommandText = "INSERT INTO Customers (FirstName, LastName) VALUES (@FirstName, @LastName)";
Run Code Online (Sandbox Code Playgroud)
我认为可能会这样做,但我不想手动插入任何东西.我想要做这两件事:
我希望有人能为此提出答案......我的项目已经完成所有等待的答案就是一个简单的答案.
提前再次感谢您.
编辑:
好的...好消息 我已经想出如何查询.mdb文件本身(我认为).这是代码,它不起作用,因为我试图使用的sql命令导致运行时错误.这将带我到我的下一个问题.
添加到DatabaseHandling.cs的新功能代码:
static public void performSynchronization(string table, string tableTwoLocation)
{
OleDbCommand cmdCopyTables = new OleDbCommand("INSERT INTO" + table + "SELECT * FROM [MS Access;" + tableTwoLocation …
Run Code Online (Sandbox Code Playgroud) 我有一个 SqlDataAdapter,它填充了 21 行数据(4 列)。驱动它的 sproc 在几秒钟内在 SQL Mgmt Studio 中返回,但 .Fill() 需要 5 分钟。
ArrayList ret = new ArrayList();
SqlDataAdapter da = null;
SqlCommand cmd = null;
cmd = base.GetStoredProc("usp_dsp_Stuff"); //Returns immediately in MSSMS.
cmd.CommandTimeout = 3600; // Set to 6 min - debug only
base.AddParameter(ref cmd, "@Param1", ParameterDirection.Input, SqlDbType.BigInt, 8, 19, 0, theParam1);
base.AddParameter(ref cmd, "@Param2", ParameterDirection.Input, SqlDbType.BigInt, 8, 19, 0, theParam2);
base.AddParameter(ref cmd, "@Param3", ParameterDirection.Input, SqlDbType.Char, 1, 'C');
da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable(); …
Run Code Online (Sandbox Code Playgroud) 我datatable
通过dataadapter
从MS-SQL
数据库中提取数据来填充对象.由于某种原因,错误的列被设置为数据表上的主键.我曾尝试FillSchema
和MissingSchemaAction.AddWithKey
无济于事.
正确的主键在SQL Server数据库架构中正确定义,并由非群集唯一索引支持PK_x
.
dataadapter选择作为主键的列是由聚簇唯一索引支持的唯一列.
这些是表中仅有的两列.
DataAdapter如何从SQL检索表模式?我查询了sys表(sys.tables,sys.index_columns,sys.indexes),它们表明了正确的主键架构.是什么赋予了?
我不敢相信,但所有迹象都表明我的 PowerShell 代码正在返回SELECT
查找 1 条记录作为对象的查询结果,但如果有两条或更多条记录,则相同的代码返回一个对象数组。我究竟做错了什么?
下面是代码:
function Connect-MySQL([string]$MySQLHost, [string]$user, [string]$pass, [string]$database) {
Write-Verbose "Connect-MySQL"
# Load MySQL .NET Connector Objects
[void][system.reflection.Assembly]::LoadWithPartialName("MySql.Data")
# Open Connection
$connStr = "server=$MySQLHost;port=3306;uid=$user;pwd=$pass;database=$database;Pooling=FALSE"
try {
$con = New-Object MySql.Data.MySqlClient.MySqlConnection($connStr)
$con.Open()
} catch [System.Management.Automation.PSArgumentException] {
Write-Verbose "Unable to connect to MySQL server, do you have the MySQL connector installed..?"
Write-Verbose $_
Exit
} catch {
Write-Verbose "Unable to connect to MySQL server..."
Write-Verbose $_.Exception.GetType().FullName
Write-Verbose $_.Exception.Message
exit
}
Write-Verbose "Connected to MySQL database $MySQLHost\$database"
return …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用MySqlDatAdapter来更新MySql表.但是,表永远不会更新!之前我用SQL服务器做过这个.我的代码中缺少哪些特定于MySql的内容?
DataTable myTable = new DataTable("testtable");
MySqlConnection mySqlCon = new MySqlConnection(ConfigurationManager.ConnectionStrings["DBConStr"].ConnectionString);
MySqlCommand mySqlCmd = new MySqlCommand("SELECT * FROM testtable WHERE Name = 'Tom'");
mySqlCmd.Connection = mySqlCon;
MySqlDataAdapter adapter = new MySqlDataAdapter(mySqlCmd);
MySqlCommandBuilder myCB = new MySqlCommandBuilder(adapter);
adapter.UpdateCommand = myCB.GetUpdateCommand();
mySqlCon.Open();
adapter.Fill(myTable);
myTable.Rows[0]["Name"] = "Was Tom";
myTable.AcceptChanges();
adapter.Update(myTable);
mySqlCon.Close();
Run Code Online (Sandbox Code Playgroud)
谢谢
我已经绑定datagridview
与datatable
(Growns)。我的主要目标是,该用户可以使用datagridview
(dataGridView1),填充和更新数据,当单击button
SAVE时,所有数据都将保存到数据表中,因为我需要它进行进一步的工作。
一切正常,除了将数据保存到 datatable。我究竟做错了什么?
这是我的代码:
private void Form2_Load(object sender, EventArgs e) {
// TODO: This line of code loads data into the 'tekmovalecDataSet.Odrasli' table. You can move, or remove it, as needed.
this.grownsTableAdapter.Fill(this.competitorDataSet.Odrasli);
}
private void buttonSave_Click(object sender, EventArgs e) {
if (EmptySpace())
{
CompetitorDataSet.OdrasliRow newGrownsRow = competitorDataSet.Growns.NewGrownsRow();
newGrownsRow.StN = textStN.Text;
newGrownsRow.Name = textN.Text;
newGrownsRow.Surname = textSN.Text;
newGrownsRow.Club = textC.Text;
newGrownsRow.YBirth = textYB.Text;
competitorDataSet.Growns.Rows.Add(OdrasliNova);
competitorDataSet.Growns.AcceptChanges();
this.dataGridView1.DataSource …
Run Code Online (Sandbox Code Playgroud) 此代码段引发错误:
更新无法在adapter.Update(ds)上找到TableMapping ['Table']或DataTable'Table'.); 线
为什么会抛出这种错误?
SqlConnection con = new SqlConnection();
con.ConnectionString = connectionString();
DataSet ds = new DataSet();
string strQuery = "SELECT * FROM Cars";
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(strQuery, con);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.Fill(ds, "Cars");
//Code to modify data in the DataSet
ds.Tables["Cars"].Rows[0]["Brand"] = "NewBrand";
adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.Update(ds);
Run Code Online (Sandbox Code Playgroud) 如何在从另一个表单对数据库进行更改后刷新datagridview,关闭子表单后我试图用click事件刷新datagridview但是它不起作用,我是否必须使用数据集?
//create an OleDbDataAdapter to execute the query
dAdapter = new OleDbDataAdapter(gQuery, connString);
//create a command builder
cBuilder = new OleDbCommandBuilder(dAdapter);
//create a DataTable to hold the query results
dTable = new DataTable();
//fill the DataTable
dAdapter.Fill(dTable);
//BindingSource to sync DataTable and DataGridView
bSource = new BindingSource();
//set the BindingSource DataSource
bSource.DataSource = dTable;
//set the DataGridView DataSource
dataGridView1.DataSource = bSource;
private void button_Refresh_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = bSource;
dataGridView1.Refresh();
}
Run Code Online (Sandbox Code Playgroud)
请帮帮我,请提前谢谢
我正在使用Paging来显示数据datagridview
,但是当我尝试使用updatebutton
数据更新任何数据时,应该更新在datagridview
数据库中以及数据库中.
但我得到这个错误:
在传递带有已修改行的DataRow集合时,Update需要有效的UpdateCommand
发生在这一行:
adp1.Update(dt);//here I am getting error
Run Code Online (Sandbox Code Playgroud)
下面是代码
public partial class EditMediClgList : Form
{
public EditMediClgList()
{
InitializeComponent();
try
{
con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb");
con.Open();
}
catch (Exception err)
{
MessageBox.Show("Error:" +err);
}
cmd1 = new OleDbCommand("Select * from MedicalColeges order by MedicalClgID", con);
ds = new DataSet();
adp1 = new OleDbDataAdapter(cmd1);
adp1.Fill(ds, "MedicalColeges");
dataGridView1.DataSource = ds;
// Get total count of the pages;
this.CalculateTotalPages();
// Load the first page …
Run Code Online (Sandbox Code Playgroud) dataadapter ×10
c# ×8
ado.net ×4
datatable ×3
datagridview ×2
dataset ×2
mysql ×2
sql ×2
sql-server ×2
.net ×1
fill ×1
ms-jet-ace ×1
powershell ×1
timeout ×1
winforms ×1