随着互联网的高速发展,数据的处理和传输已经成为了一项重要的工作。而在大量数据的处理和传输时,为了保证数据的安全和准确性,使用C语言结合ON格式的数据传输便成为了很多厂商和开发者的选择。
1. ON格式简介
ON(JavaScript Object Notation)是一种轻量级的数据交换格式,可以方便的在不同的语言之间传输数据。ON既可以用于服务器和客户端之间的数据交互,也可以用于不同系统之间的通讯。ON格式具有通用性、易读性、易用性、广泛的支持和易于解析等优点,在数据传输和处理中使用ON格式是十分常见的。
ON格式的数据由键值对组成,键值对之间使用逗号分隔,整个数据由花括号{}包围。键值对由键和值组成,键和值之间使用冒号:分隔。键和值都可以是字符串、数字、数组和对象等类型。
下面是一段ON数据的示例:
“`json
{
“name”: “Tom”,
“age”: 18,
“friends”: [“Jerry”, “Bob”, “Lucy”],
“address”: {
“province”: “Guangdong”,
“city”: “Shenzhen”
}
}
“`
在ON格式中,上述数据表示了一个人的名字、年龄、朋友以及地址信息。可以看到,这个ON数据使用花括号包围,键之间使用逗号分隔,每个键都有对应的值。其中朋友是一个数组,地址是一个对象。
2. C语言中的ON库
C语言本身并不支持ON格式的数据交互和处理,但我们可以使用一些第三方的ON库来实现这个功能。常见的C语言ON库有cON、Jansson、ON-C等,这些库都是开源的,并且应用广泛。
例如,我们可以使用cON库来解析和生成ON数据。cON是一个轻量级的C语言ON库,使用方便,功能完备,支持数组和嵌套对象,能够快速的解析、生成以及操作ON数据。
下面是cON库的使用示例:
“`c
#include
#include
#include “cON.h”
int mn() {
// 创建ON对象
cON *root = cON_CreateObject();
// 添加键值对
cON_AddStringToObject(root, “name”, “Tom”);
cON_AddNumberToObject(root, “age”, 18);
// 添加数组
cON_AddItemToObject(root, “friends”, cON_CreateString(“Jerry”));
cON_AddItemToArray(cON_GetObjectItem(root, “friends”), cON_CreateString(“Bob”));
cON_AddItemToArray(cON_GetObjectItem(root, “friends”), cON_CreateString(“Lucy”));
// 添加对象
cON_AddItemToObject(root, “address”, cON_CreateObject());
cON_AddStringToObject(cON_GetObjectItem(root, “address”), “province”, “Guangdong”);
cON_AddStringToObject(cON_GetObjectItem(root, “address”), “city”, “Shenzhen”);
// 生成ON字符串
char *json_str = cON_Print(root);
printf(“%s\n”, json_str);
// 解析ON字符串
cON *root2 = cON_Parse(json_str);
const char *name = cON_GetObjectItem(root2, “name”)->valuestring;
int age = cON_GetObjectItem(root2, “age”)->valueint;
cON *friends = cON_GetObjectItem(root2, “friends”);
int size = cON_GetArraySize(friends);
const char *province = cON_GetObjectItem(cON_GetObjectItem(root2, “address”), “province”)->valuestring;
const char *city = cON_GetObjectItem(cON_GetObjectItem(root2, “address”), “city”)->valuestring;
printf(“name = %s\n”, name);
printf(“age = %d\n”, age);
printf(“province = %s\n”, province);
printf(“city = %s\n”, city);
for (int i = 0; i
const char *friend = cON_GetArrayItem(friends, i)->valuestring;
printf(“friend[%d] = %s\n”, i, friend);
}
// 释放内存
free(json_str);
cON_Delete(root);
cON_Delete(root2);
return 0;
}
“`
运行上述程序,可以得到下面的输出结果:
“`json
{
“name”:”Tom”,
“age”:18,
“friends”:[“Jerry”,”Bob”,”Lucy”],
“address”:{
“province”:”Guangdong”,
“city”:”Shenzhen”
}
}
name = Tom
age = 18
province = Guangdong
city = Shenzhen
friend[0] = Jerry
friend[1] = Bob
friend[2] = Lucy
“`
可以看到,上述程序使用cON库创建了一个ON对象,并添加了键值对、数组和对象。然后,将ON对象转换成ON字符串输出,再通过cON_Parse函数将ON字符串解析成ON对象,然后取出对应的值进行使用。释放内存,结束程序。
3. C语言使用ON传输数据库信息
在实际应用中,我们可以使用C语言和ON格式来传输和处理大量的数据库信息。在数据处理和传输时,我们先将数据库中的数据读取到内存中,然后使用cON库将数据转换成ON格式的字符串,再发送给客户端。客户端接收到ON字符串后,可以通过解析ON字符串,将ON数据转换成对应的结构体或数组,然后进行数据处理。
例如,下面是一个简单的使用C语言和ON传输数据库信息的示例:
“`c
#include
#include
#include
#include “cON.h”
#define DB_HOST “localhost”
#define DB_USER “root”
#define DB_PASS “”
#define DB_NAME “test”
#define DB_PORT 3306
int query_database(MYSQL *con, const char *sql, cON **result) {
if (mysql_query(con, sql)) {
printf(“Error %u: %s\n”, mysql_errno(con), mysql_error(con));
return 1;
}
MYSQL_RES *res = mysql_store_result(con);
if (!res) {
printf(“Error %u: %s\n”, mysql_errno(con), mysql_error(con));
return 1;
}
int num_fields = mysql_num_fields(res);
MYSQL_FIELD *fields = mysql_fetch_fields(res);
int num_rows = mysql_num_rows(res);
cON *root = cON_CreateArray();
*result = root;
for (int i = 0; i
MYSQL_ROW row = mysql_fetch_row(res);
if (!row)
break;
cON *item = cON_CreateObject();
cON_AddItemToArray(root, item);
for (int j = 0; j
cON_AddStringToObject(item, fields[j].name, row[j] ? row[j] : “”);
}
}
mysql_free_result(res);
return 0;
}
int mn() {
MYSQL *con = mysql_init(NULL);
if (!con) {
printf(“Error %u: %s\n”, mysql_errno(con), mysql_error(con));
return 1;
}
if (!mysql_real_connect(con, DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT, NULL, 0)) {
printf(“Error %u: %s\n”, mysql_errno(con), mysql_error(con));
return 1;
}
const char *sql = “SELECT * FROM users”;
cON *result = NULL;
query_database(con, sql, &result);
char *json_str = cON_Print(result);
printf(“%s\n”, json_str);
free(json_str);
cON_Delete(result);
mysql_close(con);
return 0;
}
“`
上述程序使用了MySQL数据库和cON库来传输数据库信息。程序连接到MySQL数据库,并执行一条查询语句获取用户信息。查询结果使用cON库生成ON格式的字符串,并输出到屏幕上。释放内存,关闭数据库连接,结束程序。
4.
相关问题拓展阅读:
1.假设两个数据库结构完全一致,包括所有的表结构定义,键约束关系,等等,那么,你可以按下面的思路来进行导库:
首先,用ADO或RDO连接指定的源数据库A和目标数据库B;
其次,用查询语句查询库A系统表,如果你没用过ACCESS的系统表,你可以打开ACCESS后,点“工具”–“选项”,念亩在“视图”页里有一个“系统对象”,勾选后确定,你就会看到在“表”对象窗口又多出了几个表,打开看看,就会明白,有些保存了表的名称信息,有些保存了每个表的各列列名等等,而且一般是通过ID能够进行关联查询的。有了这些信息,我相信你生成个T-sql语句把每个表名称都查出来不成问题吧。
第三,用编程语言(VB、C#等)便历每个表,用链接数迹高烂据库姿漏的形式把链接表内容入目的表(快办法);或便历每个源表后,用程序实现遍历每条记录,逐行插入目的表(笨办法)。
2.如果存在表间的外键约束,那么我建议你还是手工来进行资料的导库。另外,如果不是存在大批量导库的问题的话,我也建议你还是手工进行导库,有写程序的功夫,最少都应该能导个三五遍了。
你的库一样不一样啊
如果是同一个数据库服务器,把数据的转移工作业务逻辑写在存储过程中,然后C#写段程序调用存储过程。
在你的数据库上右键,任务,导出数据。这个页面是你要从哪个数据库中导出数据,下一步首岩,这个启芹友页面是你要导到哪个悄槐数据库,下一步,选择之一项,下一步,这个页面是选择你要导到另一个表的表或视图。(表的主键导不过去)下一步,再下一步。完成。
利用构造方法啊,例如Form2 f2=new Form2(textbox.text)
Form2 定义的时候,在铅猜写构造函数时好激腔候带个参数
public Form2(string str)
{
InitializeComponent();
label1.Text=str;
}
另外,团IDC网上有许多产友衫品团购,便宜有口碑
我可以说下思路- -~
但缺基是估计数据大了内存伤不起T_T
为毛要在c#里做 说说伏源谨需求裂行0 0~
只要文件能够用记事本打开并格式正确,就可以把他认州铅高为是文本文件进行处理.
象这种格式的数据没有什么册尺太好的办法,只有从文本文件中逐行读取解析,当读到完整的记录时执行SQL语句插入到数激备据库中.
asp.net/c#代码实现excel to mssql数据导入
2023年12月17日 星期三 13:42
做网站项目时,可能会遇到将excel文件中的数据导入至sql server数据库的需求,把excel也看作数据库,使用OleDb连接后读取数据然后写入用SqlClient连接的sql server数据库即可,技术上没有什么难度。消配乱
但是需要考虑的一个问题是,系统安装的环境一般是专卖孙用sql server服务器+web服务器+客户端,而excel文件往往在客户端导入,如果直接使用sql语句读取的话,由于sql在web服务器上运行,不能读取到客户端的excel地址,就会出错了。
既然知道了错误拿档的原因,解决方案也就有了:
1、把客户端的excel上传至web服务器上某文件夹,注意要给该文件夹设置网络用户的“写入”权限;
2、使用OleDb+sql语句读取web服务器上的excel文件
3、将读取的数据写入到sql server 数据库
4、将web服务器上的临时excel删除
部分代码如下:
string filename = FileUpload1.PostedFile.FileName.Substring(FileUpload1.PostedFile.FileName.LastIndexOf(“\\”));
FileUpload1.PostedFile.SaveAs(Server.MapPath(“fileupload\\”) + filename);//上传文件
string conn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Server.MapPath(“fileupload\\”) + filename + “;Extended Properties=Excel 8.0”;
string sqlin = “SELECT * FROM “;
OleDbCommand olecommand = new OleDbCommand(sqlin, new OleDbConnection(conn));
OleDbDataAdapter adapterin = new OleDbDataAdapter(olecommand);
DataSet dsin = new DataSet();
adapterin.Fill(dsin);
DataTable dtin = dsin.Tables;//连接并读取excel数据
for (i = 3; i alert(‘数据导入错误,请检查Excel文件’)”);
return;
}
}
FileInfo file = new FileInfo(Server.MapPath(“fileupload/”) + filename);
if (file.Exists)
{//删除文件
file.Delete();
}
protected void DoSql(string sql)//执行sql语句的函数
{
SqlConnection conn = new SqlConnection();//创建连接对象
conn.ConnectionString = ConfigurationManager.AppSettings.ToString();//给连接字符串赋值
conn.Open();//打开数据库
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();//
conn.Close();//关闭数据库
}
注:
1、本文代码均取自我最近刚做的一个小项目,部分数据有较强针对性,并不通用,只有思路通用
2、由于能力和水平问题,部分代码显得有些笨拙,若能灵活运用存储过程,应能大幅度简化代码 只要你的文件能够用记事本打开并格式正确,就可以把他认为是文本文件进行处理.
象这种格式的数据没有什么太好的办法,只有从文本文件中逐行读取解析,当读到完整的记录时执行SQL语句插入到数据库中.
参考:
asp.net/c#代码实现excel to mssql数据导入
2023年12月17日 星期三 13:42
做网站项目时,可能会遇到将excel文件中的数据导入至sql server数据库的需求,把excel也看作数据库,使用OleDb连接后读取数据然后写入用SqlClient连蠢竖前接的sql server数据库即可,技术上没有什么难度。
但是需要考虑的一个问题是,系统安装的环境一般是专用sql server服务器+web服务器+客户端,而excel文件往往带清在客户端导入,如果直接使用sql语句读取的话,由于sql在web服务器上运行,不能读取到客户端的excel地址,就会出错了。
既然知道了错误的原因,解决方案也就有了:
1、把客户端的excel上传至web服务器上某文件夹,注意要给该文件夹设置网络用户的“写入”权限;
2、使用OleDb+sql语句读取web服务器上的excel文件
3、将读取的数据写入到sql server 数据库
4、将web服务器上的临时excel删除
部分代码如下:
string filename = FileUpload1.PostedFile.FileName.Substring(FileUpload1.PostedFile.FileName.LastIndexOf(“\\”));
FileUpload1.PostedFile.SaveAs(Server.MapPath(“fileupload\\”) + filename);//上传文件
string conn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Server.MapPath(“fileupload\\”纤冲) + filename + “;Extended Properties=Excel 8.0”;
string sqlin = “SELECT * FROM “;
OleDbCommand olecommand = new OleDbCommand(sqlin, new OleDbConnection(conn));
OleDbDataAdapter adapterin = new OleDbDataAdapter(olecommand);
DataSet dsin = new DataSet();
adapterin.Fill(dsin);
DataTable dtin = dsin.Tables;//连接并读取excel数据
for (i = 3; i alert(‘数据导入错误,请检查Excel文件’)”);
return;
}
}
FileInfo file = new FileInfo(Server.MapPath(“fileupload/”) + filename);
if (file.Exists)
{//删除文件
file.Delete();
}
protected void DoSql(string sql)//执行sql语句的函数
{
SqlConnection conn = new SqlConnection();//创建连接对象
conn.ConnectionString = ConfigurationManager.AppSettings.ToString();//给连接字符串赋值
conn.Open();//打开数据库
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();//
conn.Close();//关闭数据库
}
注:
1、本文代码均取自我最近刚做的一个小项目,部分数据有较强针对性,并不通用,只有思路通用
2、由于能力和水平问题,部分代码显得有些笨拙,若能灵活运用存储过程,应能大幅度简化代码
只要你的文件岩猛能够世做用记事本打开并格式正确,就可以把他认为是文本文件进行处理.
象这种格式的数搜枣衡据没有什么太好的办法,只有从文本文件中逐行读取解析,当读到完整的记录时执行SQL语句插入到数据库中.
把文本文件转成一销清个的格锋毁式,比如用逗号分亏基前隔
111,234,fsgds,45645,ghjgh,sdf
dfg,fgh,fghf,dfgh,dfgdf,gdfg,
tryer,yery,ret,ertey,uti,yuiyu
关于c json传大批量数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
成都创新互联科技有限公司,是一家专注于互联网、IDC服务、应用软件开发、网站建设推广的公司,为客户提供互联网基础服务!
创新互联(www.cdcxhl.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。创新互联成都老牌IDC服务商,专注四川成都IDC机房服务器托管/机柜租用。为您精选优质idc数据中心机房租用、服务器托管、机柜租赁、大带宽租用,可选线路电信、移动、联通等。
分享名称:C语言使用ON传输大量数据库信息(cjson传大批量数据库)
分享网址:http://www.shufengxianlan.com/qtweb/news25/479225.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联