qq飞车麦凯伦四大神车是哪些

richtextbox怎么从数据库读取多条记录显示出来,并实时更新,类似于聊天窗口 - C#当前位置:& &&&richtextbox怎么从数据库读取多条记录显示出来,并实richtextbox怎么从数据库读取多条记录显示出来,并实时更新,类似于聊天窗口,网友分享于:&&&浏览:292次richtextbox如何从数据库读取多条记录显示出来,并实时更新,类似于聊天窗口richtextbox如何从数据库读取多条记录显示出来,并实时更新,类似于聊天窗口------解决方案--------------------用个线程或者定时器检测是否有新记录,有新记录就添加到richtextbox。
------解决方案--------------------
/KB/edit/SyntaxRichTextBox.aspx去CodeProject上找找
------解决方案--------------------
用后台工作者异步刷新数据显示即可,backgroundworker是采用异步机制,对CPU资源不会独占。
------解决方案--------------------
不开线程的话,很容易实现。直接RichTextBox1.Text += string就行了。如果单开一个线程的话,就要用到invoke从线程反射到UI窗体。你查下invoke的典型用法应该也就清楚了。
------解决方案--------------------
探讨/KB/edit/SyntaxRichTextBox.aspx 去CodeProject上找找
------解决方案--------------------RichTextBox.Text += &\n& + &你新读取的字符串& 相关解决方案暂无相关解决方案 12345678910
12345678910
12345678910 上一篇:下一篇:Copyright & &版权所有C#如何从数据库读取数据绘制折现图
请问下这种折线图怎么绘制,需要滚动条,这个图是在哪个控件上绘制的
给你推荐一个组件,然后你按照他的格式把数据查出来转成相应的格式返回给前端渲染出来就可以了
网页?客户端?
网页用highcharts、echarts都行
客户端的话,winform用Chart控件,WPF我也不知道怎么玩
--- 共有 1 条评论 ---
如果数据量较大的话,就用来绘制图表,性能好点C#使用DataSet Datatable更新数据库的三种实现方法
投稿:shichen2014
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了C#使用DataSet Datatable更新数据库的三种实现方法,需要的朋友可以参考下
本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法、DataAdapter 更新数据源以及使用sql语句更新。分享给大家供大家参考之用。具体方法如下:
一、自动生成命令的条件 CommandBuilder 方法
a)动态指定 SelectCommand 属性
b)利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteCommand、InsertCommand 和 UpdateCommand。
c)为了返回构造 INSERT、UPDATE 和 DELETE 。SQL CommandBuilder 必须执行 SelectCommand。
即:必须额外经历一次到数据源的行程,这可能会降低性能。这也是自动生成命令的缺点。
d)SelectCommand 还必须返回至少一个主键或唯一列.
当CommandBuilder和DataAdapter关联时,就会自动生成DeleteCommand、InsertCommand 和 UpdateCommand中为空的命令。即不空的不生成。
e)必须是一个表,SELECT的不能是多个表的联合。
动生成命令的规则:
在数据源处为表中所有 RowState 为 Added 的行插入一行(不包括标识、表达式或时间戳等列)。
为 Modified 的行更新行(列值匹配行的主键列值) 。
Deleted 的行删除行(列值匹配行的主键列值).这就是为什么要求条件c.d
a)因为从SELECT数据到UPDATE数据,中间这段时间有可能别的用户已经对数据进行了修改。自动生成命令这种UPDATE只对在行包含所有原始值并且尚未从数据源中删除时更新。
b)自动命令生成逻辑为独立表生成 INSERT、UPDATE 或 DELETE 语句,而不考虑与数据源中其他表的任何关系。因此,当调用 Update 来为参与数据库中外键约束的列提交更改时,可能会失败。若要避免这一异常,请不要使用 CommandBuilder 来更新参与外键约束的列,而应显式地指定用于执行该操作的语句。
下面是自动生成命令的例子
// Assumes that connection is a valid SqlConnection object.
SqlDataAdapter adapter = new SqlDataAdapter(
"SELECT * FROM dbo.Customers", connection);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
builder.QuotePrefix = "[";
builder.QuoteSuffix = "]";
DataSet custDS = new DataSet();
connection.Open();
adapter.Fill(custDS, "Customers");
// Code to modify data in the DataSet here.
// Without the SqlCommandBuilder, this line would fail.
adapter.Update(custDS, "Customers");
connection.Close();
二、使用 DataAdapter 更新数据源
需要注意:
a)如果 SelectCommand 返回 OUTER JOIN 的结果,则 DataAdapter 不会为生成的 DataTable 设置 PrimaryKey 值。您必须自己定义PrimaryKey 以确保正确解析重复行.
b)如果对 DataSet、DataTable 或 DataRow 调用 AcceptChanges,则将使 DataRow 的所有 Original 值都将被重写为该 DataRow 的 Current 值。如果已修改将该行标识为唯一行的字段值,那么当调用 AcceptChanges 后,Original 值将不再匹配数据源中的值。
看看下面例子:
// Assumes connection is a valid SqlConnection.
SqlDataAdapter dataAdpater = new SqlDataAdapter(
"SELECT CategoryID, CategoryName FROM Categories", connection);
dataAdpater.UpdateCommand = new SqlCommand(
"UPDATE Categories SET CategoryName = @CategoryName " +
"WHERE CategoryID = @CategoryID" , connection);
dataAdpater.UpdateCommand.Parameters.Add(
"@CategoryName", SqlDbType.NVarChar, 15, "CategoryName");
SqlParameter parameter = dataAdpater.UpdateCommand.Parameters.Add(
"@CategoryID", SqlDbType.Int);
parameter.SourceColumn = "CategoryID";
parameter.SourceVersion = DataRowVersion.O
DataSet dataSet = new DataSet();
dataAdpater.Fill(dataSet, "Categories");
DataRow row = dataSet.Tables["Categories"].Rows[0];
row ["CategoryName"] = "New Category";
dataAdpater.Update(dataSet, "Categories");
插入、更新和删除的排序
在许多情况下,以何种顺序向数据源发送通过 DataSet 作出的更改是相当重要的。
例如,如果已更新现有行的主键值并且添加了具有新主键值的新行,则务必要在处理插入之前处理更新。
可以使用 DataTable 的 Select 方法来返回仅引用具有特定 RowState 的 DataRow 数组。然后可以将返回的 DataRow 数组传递到 DataAdapter 的 Update 方法来处理已修改的行。通过指定要更新的行的子集,可以控制处理插入、更新和删除的顺序。
示例如下:
DataTable table = dataSet.Tables["Customers"];
// First process deletes.
adapter.Update(table.Select(null, null, DataViewRowState.Deleted));
// Next process updates.
adapter.Update(table.Select(null, null,
DataViewRowState.ModifiedCurrent));
// Finally, process inserts.
adapter.Update(table.Select(null, null, DataViewRowState.Added));
三、使用sql语句更新
cmd = new OleDbCommand(string.Format(@"insert into worker(workerid,workername,password,phoneno) values ('{0}','{1}','{2}','{3}') ", textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text),oc);
oc.Open();
int i = cmd.ExecuteNonQuery();
catch (Exception ex)
性能的优劣及使用的情形,还未完全明白。
一般的,绑定bindingsource,用datatable绑定bindingsource (实质上绑定的是datatable。defaultview,同时可用到dataview的筛选功能,但是在筛选完后,filter要重置为null,否则出现的一直是经过筛选的数据)
使用builder 的作用:
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
这个主要是为了让C#自动为OleDbDataAdapter da生成相对应的DeleteCommand,UpdateCommand!
希望本文所述对大家的C#数据库程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具6575人阅读
MS SQL Server(8)
C#同步SQL Server数据库中的数据
1. 先写个sql处理类:
using System.Collections.G
using System.D
using System.Data.SqlC
using System.T
namespace PinkDatabaseSync
class DBUtility : IDisposable
private string S
private string D
private string U
private string P
private string connectionS
private SqlConnection mySqlC
public void EnsureConnectionIsOpen()
if (mySqlConn == null)
mySqlConn = new SqlConnection(this.connectionStr);
mySqlConn.Open();
else if (mySqlConn.State == ConnectionState.Closed)
mySqlConn.Open();
public DBUtility(string server, string database, string uid, string password)
this.Server =
this.Database =
this.Uid =
this.Password =
this.connectionStr = &Server=& + this.Server + &;Database=& + this.Database + &;User Id=& + this.Uid + &;Password=& + this.P
public int ExecuteNonQueryForMultipleScripts(string sqlStr)
this.EnsureConnectionIsOpen();
SqlCommand cmd = mySqlConn.CreateCommand();
mandType = CommandType.T
mandText = sqlS
return cmd.ExecuteNonQuery();
public int ExecuteNonQuery(string sqlStr)
this.EnsureConnectionIsOpen();
SqlCommand cmd = new SqlCommand(sqlStr, mySqlConn);
mandType = CommandType.T
return cmd.ExecuteNonQuery();
public object ExecuteScalar(string sqlStr)
this.EnsureConnectionIsOpen();
SqlCommand cmd = new SqlCommand(sqlStr, mySqlConn);
mandType = CommandType.T
return cmd.ExecuteScalar();
public DataSet ExecuteDS(string sqlStr)
DataSet ds = new DataSet();
this.EnsureConnectionIsOpen();
SqlDataAdapter sda= new SqlDataAdapter(sqlStr,mySqlConn);
sda.Fill(ds);
public void BulkCopyTo(string server, string database, string uid, string password, string tableName, string primaryKeyName)
string connectionString = &Server=& + server + &;Database=& + database + &;User Id=& + uid + &;Password=& +
// Create destination connection
SqlConnection destinationConnector = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(&SELECT * FROM & + tableName, destinationConnector);
// Open source and destination connections.
this.EnsureConnectionIsOpen();
destinationConnector.Open();
SqlDataReader readerSource = cmd.ExecuteReader();
bool isSourceContainsData =
string whereClause = & where &;
while (readerSource.Read())
isSourceContainsData =
whereClause += & & + primaryKeyName + &!=& + readerSource[primaryKeyName].ToString() + & and &;
whereClause = whereClause.Remove(whereClause.Length - & and &.Length, & and &.Length);
readerSource.Close();
whereClause = isSourceContainsData ? whereClause : string.E
// Select data from Products table
cmd = new SqlCommand(&SELECT * FROM & + tableName + whereClause, mySqlConn);
// Execute reader
SqlDataReader reader = cmd.ExecuteReader();
// Create SqlBulkCopy
SqlBulkCopy bulkData = new SqlBulkCopy(destinationConnector);
// Set destination table name
bulkData.DestinationTableName = tableN
// Write data
bulkData.WriteToServer(reader);
// Close objects
bulkData.Close();
destinationConnector.Close();
mySqlConn.Close();
public void Dispose()
if (mySqlConn != null)
mySqlConn.Close();
2. 再写个数据库类型类:
using System.Collections.G
using System.T
namespace PinkDatabaseSync
public class SQLDBSystemType
public static Dictionary&string, string& systemTypeDict
var systemTypeDict = new Dictionary&string, string&();
systemTypeDict.Add(&34&, &image&);
systemTypeDict.Add(&35&, &text&);
systemTypeDict.Add(&36&, &uniqueidentifier&);
systemTypeDict.Add(&40&, &date&);
systemTypeDict.Add(&41&, &time&);
systemTypeDict.Add(&42&, &datetime2&);
systemTypeDict.Add(&43&, &datetimeoffset&);
systemTypeDict.Add(&48&, &tinyint&);
systemTypeDict.Add(&52&, &smallint&);
systemTypeDict.Add(&56&, &int&);
systemTypeDict.Add(&58&, &smalldatetime&);
systemTypeDict.Add(&59&, &real&);
systemTypeDict.Add(&60&, &money&);
systemTypeDict.Add(&61&, &datetime&);
systemTypeDict.Add(&62&, &float&);
systemTypeDict.Add(&98&, &sql_variant&);
systemTypeDict.Add(&99&, &ntext&);
systemTypeDict.Add(&104&, &bit&);
systemTypeDict.Add(&106&, &decimal&);
systemTypeDict.Add(&108&, &numeric&);
systemTypeDict.Add(&122&, &smallmoney&);
systemTypeDict.Add(&127&, &bigint&);
systemTypeDict.Add(&240-128&, &hierarchyid&);
systemTypeDict.Add(&240-129&, &geometry&);
systemTypeDict.Add(&240-130&, &geography&);
systemTypeDict.Add(&165&, &varbinary&);
systemTypeDict.Add(&167&, &varchar&);
systemTypeDict.Add(&173&, &binary&);
systemTypeDict.Add(&175&, &char&);
systemTypeDict.Add(&189&, &timestamp&);
systemTypeDict.Add(&231&, &nvarchar&);
systemTypeDict.Add(&239&, &nchar&);
systemTypeDict.Add(&241&, &xml&);
systemTypeDict.Add(&231-256&, &sysname&);
return systemTypeD
3. 写个同步数据库中的数据:
public void BulkCopyTo(string server, string database, string uid, string password, string tableName, string primaryKeyName)
string connectionString = &Server=& + server + &;Database=& + database + &;User Id=& + uid + &;Password=& +
// Create destination connection
SqlConnection destinationConnector = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(&SELECT * FROM & + tableName, destinationConnector);
// Open source and destination connections.
this.EnsureConnectionIsOpen();
destinationConnector.Open();
SqlDataReader readerSource = cmd.ExecuteReader();
bool isSourceContainsData =
string whereClause = & where &;
while (readerSource.Read())
isSourceContainsData =
whereClause += & & + primaryKeyName + &!=& + readerSource[primaryKeyName].ToString() + & and &;
whereClause = whereClause.Remove(whereClause.Length - & and &.Length, & and &.Length);
readerSource.Close();
whereClause = isSourceContainsData ? whereClause : string.E
// Select data from Products table
cmd = new SqlCommand(&SELECT * FROM & + tableName + whereClause, mySqlConn);
// Execute reader
SqlDataReader reader = cmd.ExecuteReader();
// Create SqlBulkCopy
SqlBulkCopy bulkData = new SqlBulkCopy(destinationConnector);
// Set destination table name
bulkData.DestinationTableName = tableN
// Write data
bulkData.WriteToServer(reader);
// Close objects
bulkData.Close();
destinationConnector.Close();
mySqlConn.Close();
4. 最后执行同步函数:
private void SyncDB_Click(object sender, EventArgs e)
string server = &localhost&;
string dbname = &pinkCRM&;
string uid = &sa&;
string password = &password&;
string server2 = &server2&;
string dbname2 = &pinkCRM2&;
string uid2 = &sa&;
string password2 = &password2&;
LogView.Text = &DB data is syncing!&;
DBUtility db = new DBUtility(server, dbname, uid, password);
DataSet ds = db.ExecuteDS(&SELECT sobjects.name FROM sysobjects sobjects WHERE sobjects.xtype = 'U'&);
DataRowCollection drc = ds.Tables[0].R
foreach (DataRow dr in drc)
string tableName = dr[0].ToString();
LogView.Text = LogView.Text + Environment.NewLine + & syncing table:& + tableName + Environment.NewL
DataSet ds2 = db.ExecuteDS(&SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.& + tableName + &')&);
DataRowCollection drc2 = ds2.Tables[0].R
string primaryKeyName = drc2[0][&name&].ToString();
db.BulkCopyTo(server2, dbname2, uid2, password2, tableName, primaryKeyName);
LogView.Text = LogView.Text +&Done sync data for table:&+ tableName+ Environment.NewL
MessageBox.Show(&Done sync db data successfully!&);
catch (Exception exc)
MessageBox.Show(exc.ToString());
注: 这里只写了对已有数据的不再插入数据,可以再提高为如果有数据更新,可以进行更新,那么一个数据库同步工具就可以完成了!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1426084次
积分:19176
积分:19176
排名:第400名
原创:534篇
译文:65篇
评论:315条
专注于微软System Center和微软公有云,私有云系列产品,主要使用C#,.NET和PHP进行个人爱好开发。 曾参与Windows Azure Integration Pack for Orchestrator in System Center 2012 SP1的开发和测试。
System Center Orchestrator源码级专家(4年产品源码和架构研究)
目前活跃在PowerShell开源社区/PowerShell
CSDN音视频技术公开课交流QQ群:或者
如何自学SSH?
基础材料:
如何自学Redis,Memcached和MongoDB?
基础材料:
如何自学PHP和Python?
基础材料:
阅读:3781
文章:16篇
阅读:80014
文章:12篇
阅读:40383
文章:18篇
阅读:21115
文章:31篇
阅读:76875
文章:26篇
阅读:178913
文章:10篇
阅读:28179
文章:24篇
阅读:54880
(1)(1)(2)(1)(6)(3)(5)(2)(7)(7)(5)(2)(15)(11)(11)(15)(6)(12)(8)(11)(9)(1)(3)(3)(29)(28)(34)(17)(36)(12)(3)(1)(1)(10)(1)(2)(6)(4)(16)(21)(8)(3)(1)(1)(4)(2)(2)(7)(2)(1)(1)(1)(3)(3)(2)(3)(23)(2)(6)(5)(23)(3)(28)(9)(2)(12)(12)(59)(1)(1)(1)(4)(1)(10)(2)(1)

我要回帖

更多关于 qq飞车哪部车好? 的文章

 

随机推荐