當前位置:首頁 » 操作系統 » c添加資料庫

c添加資料庫

發布時間: 2022-07-07 10:27:38

⑴ 請問如何用c語言動態為資料庫添加一個表

因為你提的問題,編譯環境上很不明確所以我做了以下假設。
系統環境linux
編譯器GCC
資料庫mysql
(編譯還需要安裝mysql的介面libmysqlclient-dev這個庫)

這樣的情況下只需要包含<mysql/mysql.h>
然後做以下操作
MYSQL *mysql_init(MYSQL *mysql); //初始化mysql
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag); //連接資料庫 具體參數含義請查MYSQL API文檔
int mysql_query(MYSQL *mysql, const char *stmt_str); //執行sql語句 如果想添加表的話 stmt_str賦值為"CREATE TABLE XXXX"就行了

⑵ 如何用C語言建立資料庫

用SQLITE吧,像ACCESS.你可以去www.sqlite.org那裡下載類庫.頭文件.以及管理工具.

⑶ c# 求通用的資料庫添加方法

這個是我自己寫的,通配資料庫所以表

先初始化資料庫所有表結構

public static string connectionString;
private static List<Column> columns;
private static Dictionary<string, SqlDbType> sqlDbType;

static SqlHelper()
{
sqlDbType = new Dictionary<string, SqlDbType>();
sqlDbType.Add("bigint", SqlDbType.BigInt);
sqlDbType.Add("binary", SqlDbType.VarBinary);
sqlDbType.Add("bit", SqlDbType.Bit);
sqlDbType.Add("char", SqlDbType.Char);
sqlDbType.Add("date", SqlDbType.Date);
sqlDbType.Add("datetime", SqlDbType.DateTime);
sqlDbType.Add("datetime2", SqlDbType.DateTime2);
sqlDbType.Add("datetimeoffset", SqlDbType.DateTimeOffset);
sqlDbType.Add("decimal", SqlDbType.Decimal);
sqlDbType.Add("float", SqlDbType.Float);
sqlDbType.Add("image", SqlDbType.Binary);
sqlDbType.Add("int", SqlDbType.Int);
sqlDbType.Add("money", SqlDbType.Money);
sqlDbType.Add("nchar", SqlDbType.NChar);
sqlDbType.Add("ntext", SqlDbType.NText);
sqlDbType.Add("numeric", SqlDbType.Decimal);
sqlDbType.Add("nvarchar", SqlDbType.NVarChar);
sqlDbType.Add("real", SqlDbType.Real);
sqlDbType.Add("rowversion", SqlDbType.Timestamp);
sqlDbType.Add("smalldatetime", SqlDbType.DateTime);
sqlDbType.Add("smallint", SqlDbType.SmallInt);
sqlDbType.Add("smallmoney", SqlDbType.SmallMoney);
sqlDbType.Add("sql_variant", SqlDbType.Variant);
sqlDbType.Add("text", SqlDbType.Text);
sqlDbType.Add("time", SqlDbType.Time);
sqlDbType.Add("timestamp", SqlDbType.Timestamp);
sqlDbType.Add("tinyint", SqlDbType.TinyInt);
sqlDbType.Add("uniqueidentifier", SqlDbType.UniqueIdentifier);
sqlDbType.Add("varbinary", SqlDbType.VarBinary);
sqlDbType.Add("varchar", SqlDbType.VarChar);
sqlDbType.Add("xml", SqlDbType.Xml);

columns = new List<Column>();
DataTable dt = ExecuteDataset("SELECT d.name AS c_table, a.colorder AS c_OrderID, a.name AS c_name, a.colstat AS c_IsIdentity, CASE WHEN EXISTS (SELECT 1 FROM sysindexes y, sysindexkeys z WHERE y.id = z.id AND y.indid = z.indid AND z.id = a.id AND z.colid = a.colid AND y.status & 2948 = 2048) THEN '1' ELSE '0' END AS c_IsPK, b.name AS c_type, a.length AS c_ByteNumber, a.prec AS c_Length, ISNULL(a.scale, 0) AS c_DecimalDigits, a.isnullable AS c_IsAllowNull, ISNULL(e.text, '') AS c_Default, ISNULL(g.[value], '') AS c_Description FROM syscolumns a LEFT JOIN systypes b ON a.xusertype = b.xusertype INNER JOIN sysobjects d ON a.id = d.id AND d.xtype = 'U' AND d.name <> 'dtproperties' LEFT JOIN syscomments e ON a.cdefault = e.id LEFT JOIN sys.extended_properties g ON a.id = G.major_id AND a.colid = g.minor_id LEFT JOIN sys.extended_properties f ON d.id = f.major_id AND f.minor_id = 0 WHERE d.name <> 'sysdiagrams' ORDER BY a.id,a.colorder").Tables[0];
foreach (DataRow dr in dt.Rows)
{

Column model = new Column();
model.Table = dr["c_table"].ToString();
model.OrderID = int.Parse(dr["c_OrderID"].ToString());
model.Name = dr["c_name"].ToString();
model.IsIdentity = (dr["c_IsIdentity"].ToString() == "1" ? true : false);
model.IsPK = (dr["c_IsPK"].ToString() == "1" ? true : false);
model.SqlDbType = sqlDbType[dr["c_type"].ToString()];
model.ByteNumber = int.Parse(dr["c_ByteNumber"].ToString());

if (dr["c_Length"].ToString() == "")
{
model.Length = null;
}
else
{
model.Length = int.Parse(dr["c_Length"].ToString());
}
model.DecimalDigits = int.Parse(dr["c_DecimalDigits"].ToString());
model.IsAllowNull = (dr["c_IsAllowNull"].ToString() == "1" ? true : false);
model.Default = dr["c_Default"].ToString();
model.Description = dr["c_Description"].ToString();
columns.Add(model);
}
}

/// <summary>
/// 數據添加
/// </summary>
public static object Add<T>(T dbModel)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
if (connection.State != ConnectionState.Open)
{
connection.Open();
}
cmd.Connection = connection;

Type t = typeof(T);
PropertyInfo[] pros = t.GetProperties();

bool isIdentity = false;
StringBuilder sql = new StringBuilder(100);
foreach (PropertyInfo pro in pros)
{
Column model = columns.Find(m => m.Table == t.Name && m.Name == pro.Name);
if (model.IsPK && model.IsIdentity)
{
isIdentity = true;
}
if (!model.IsIdentity)
{
sql.Append(model.Name + ',');
object val = pro.GetValue(dbModel, null);
if (val == null)
{
val = DBNull.Value;
}
SqlParameter sp = new SqlParameter("@" + model.Name, model.SqlDbType);
sp.Value = val;
cmd.Parameters.Add(sp);
}
}

cmd.CommandText = "INSERT INTO " + t.Name + "(" + sql.ToString().TrimEnd(',') + ") VALUES (@" + sql.Replace(",", ",@").ToString().TrimEnd(new char[] { ',', '@' }) + ")" + (isIdentity ? ";SELECT @@IDENTITY" : "");
cmd.CommandType = CommandType.Text;

object obj = cmd.ExecuteScalar();
cmd.Parameters.Clear();
if (Object.Equals(obj, System.DBNull.Value))
{
return null;
}
else
{
return obj;
}
}
}
}

⑷ C加加資料庫

=號:是賦值語句
->運算符:獲取指針所指向的結構體里的內容

這些都是賦值語句,把等號右邊的賦值給左邊的。先->後=,還是先=後->,它們區別要看實現什麼賦值,看誰的值賦值給誰。不要把->理解成加減乘除這樣的運算符。

e=P->data;

這句要看data在結構體中是什麼類型,如果是int類型,那麼就是P指針所指向的這個結構體對應的data的值賦值給e。如果data是指針,那麼就是指針賦值給指針。

front=front->next;
這也是賦值語句,front是個指針,這個指針所對應的結構體是個鏈式結構體,next就是一個指向下一個同類型結構體的指針,這句賦值就是front指向它的下一個結構體。

rear->next=P;
也是指針賦值,把P對應的結構體放在rear指向的結構體的下一鏈。

⑸ 用c語言怎麼連接資料庫呢

25.2.2. C API函數概述
這里歸納了C API可使用的函數,並在下一節詳細介紹了它們。請參見25.2.3節,「C API函數描述」。

函數
描述

mysql_affected_rows()
返回上次UPDATE、DELETE或INSERT查詢更改/刪除/插入的行數。

mysql_autocommit()
切換 autocommit模式,ON/OFF

mysql_change_user()
更改打開連接上的用戶和資料庫。

mysql_charset_name()
返回用於連接的默認字元集的名稱。

mysql_close()
關閉伺服器連接。

mysql_commit()
提交事務。

mysql_connect()
連接到MySQL伺服器。該函數已不再被重視,使用mysql_real_connect()取代。

mysql_create_db()
創建資料庫。該函數已不再被重視,使用SQL語句CREATE DATABASE取而代之。

mysql_data_seek()
在查詢結果集中查找屬性行編號。

mysql_debug()
用給定的字元串執行DBUG_PUSH。

mysql_drop_db()
撤銷資料庫。該函數已不再被重視,使用SQL語句DROP DATABASE取而代之。

mysql_mp_debug_info()
讓伺服器將調試信息寫入日誌。

mysql_eof()
確定是否讀取了結果集的最後一行。該函數已不再被重視,可以使用mysql_errno()或mysql_error()取而代之。

mysql_errno()
返回上次調用的MySQL函數的錯誤編號。

mysql_error()
返回上次調用的MySQL函數的錯誤消息。

mysql_escape_string()
為了用在SQL語句中,對特殊字元進行轉義處理。

mysql_fetch_field()
返回下一個表欄位的類型。

mysql_fetch_field_direct()
給定欄位編號,返回表欄位的類型。

mysql_fetch_fields()
返回所有欄位結構的數組。

mysql_fetch_lengths()
返回當前行中所有列的長度。

mysql_fetch_row()
從結果集中獲取下一行

mysql_field_seek()
將列游標置於指定的列。

mysql_field_count()
返回上次執行語句的結果列的數目。

mysql_field_tell()
返回上次mysql_fetch_field()所使用欄位游標的位置。

mysql_free_result()
釋放結果集使用的內存。

mysql_get_client_info()
以字元串形式返回客戶端版本信息。

mysql_get_client_version()
以整數形式返回客戶端版本信息。

mysql_get_host_info()
返回描述連接的字元串。

mysql_get_server_version()
以整數形式返回伺服器的版本號。

mysql_get_proto_info()
返回連接所使用的協議版本。

mysql_get_server_info()
返回伺服器的版本號。

mysql_info()
返回關於最近所執行查詢的信息。

mysql_init()
獲取或初始化MYSQL結構。

mysql_insert_id()
返回上一個查詢為AUTO_INCREMENT列生成的ID。

mysql_kill()
殺死給定的線程。

mysql_library_end()
最終確定MySQL C API庫。

mysql_library_init()
初始化MySQL C API庫。

mysql_list_dbs()
返回與簡單正則表達式匹配的資料庫名稱。

mysql_list_fields()
返回與簡單正則表達式匹配的欄位名稱。

mysql_list_processes()
返回當前伺服器線程的列表。

mysql_list_tables()
返回與簡單正則表達式匹配的表名。

mysql_more_results()
檢查是否還存在其他結果。

mysql_next_result()
在多語句執行過程中返回/初始化下一個結果。

mysql_num_fields()
返回結果集中的列數。

mysql_num_rows()
返回結果集中的行數。

mysql_options()
為mysql_connect()設置連接選項。

mysql_ping()
檢查與伺服器的連接是否工作,如有必要重新連接。

mysql_query()
執行指定為「以Null終結的字元串」的SQL查詢。

mysql_real_connect()
連接到MySQL伺服器。

mysql_real_escape_string()
考慮到連接的當前字元集,為了在SQL語句中使用,對字元串中的特殊字元進行轉義處理。

mysql_real_query()
執行指定為計數字元串的SQL查詢。

mysql_refresh()
刷新或復位表和高速緩沖。

mysql_reload()
通知伺服器再次載入授權表。

mysql_rollback()
回滾事務。

mysql_row_seek()
使用從mysql_row_tell()返回的值,查找結果集中的行偏移。

mysql_row_tell()
返回行游標位置。

mysql_select_db()
選擇資料庫。

mysql_server_end()
最終確定嵌入式伺服器庫。

mysql_server_init()
初始化嵌入式伺服器庫。

mysql_set_server_option()
為連接設置選項(如多語句)。

mysql_sqlstate()
返回關於上一個錯誤的SQLSTATE錯誤代碼。

mysql_shutdown()
關閉資料庫伺服器。

mysql_stat()
以字元串形式返回伺服器狀態。

mysql_store_result()
檢索完整的結果集至客戶端。

mysql_thread_id()
返回當前線程ID。

mysql_thread_safe()
如果客戶端已編譯為線程安全的,返回1。

mysql_use_result()
初始化逐行的結果集檢索。

mysql_warning_count()
返回上一個SQL語句的告警數。 詳見:http://dev.mysql.com/doc/refman/5.1/zh/apis.html#c-api-function-overview
http://dev.mysql.com/doc/refman/5.0/en/c.html

⑹ 怎樣用c語言給mysql資料庫插數據

無論什麼語言給什麼資料庫插入數據,用的都是
SQL語言
的insert
into語句。具體格式:
insert
into
表名(列名1,列名2,...,列名n)values('值1','值2',...,'值n');

⑺ c語言怎麼連接mysql資料庫 代碼

//vc工具中添加E:\WAMP\BIN\MYSQL\MYSQL5.5.8\LIB 路徑
//在工程設置-》鏈接》庫模塊中添加 libmysql.lib
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <winsock.h>
#include "E:\wamp\bin\mysql\mysql5.5.8\include\mysql.h"
void main(){
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char *server ="localhost";
char *user ="root";
char *password="";
char *database="test";
char sql[1024]="select * from chinaren";
conn=mysql_init(NULL);
if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0)){
fprintf(stderr,"%s\n",mysql_error(conn));
exit(1);
}
if(mysql_query(conn,sql)){
fprintf(stderr,"%s\n",mysql_error(conn));
exit(1);
}
res=mysql_use_result(conn);
while((row = mysql_fetch_row(res))!=NULL){
printf("%s\n",row[2]);
}
mysql_free_result(res);
mysql_close(conn);
}
===============================
#if defined(_WIN32) || defined(_WIN64) //為了支持windows平台上的編譯
#include <windows.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"
//定義資料庫操作的宏,也可以不定義留著後面直接寫進代碼
#define SELECT_QUERY "show tables;"
int main(int argc, char **argv) //char **argv 相當於 char *argv[]
{
MYSQL mysql,*handle; //定義資料庫連接的句柄,它被用於幾乎所有的MySQL函數
MYSQL_RES *result; //查詢結果集,結構類型
MYSQL_FIELD *field ; //包含欄位信息的結構
MYSQL_ROW row ; //存放一行查詢結果的字元串數組
char querysql[160]; //存放查詢sql語句字元串
//初始化
mysql_init(&mysql);
//連接資料庫
if (!(handle = mysql_real_connect(&mysql,"localhost","user","pwd","dbname",0,NULL,0))) {
fprintf(stderr,"Couldn't connect to engine!\n%s\n\n",mysql_error(&mysql));
}
sprintf(querysql,SELECT_QUERY,atoi(argv[1]));
//查詢資料庫
if(mysql_query(handle,querysql)) {
fprintf(stderr,"Query failed (%s)\n",mysql_error(handle));
}
//存儲結果集
if (!(result=mysql_store_result(handle))) {
fprintf(stderr,"Couldn't get result from %s\n", mysql_error(handle));
}
printf("number of fields returned: %d\n",mysql_num_fields(result));
//讀取結果集的內容
while (row = mysql_fetch_row(result)) {
printf("table: %s\n",(((row[0]==NULL)&&(!strlen(row[0]))) ? "NULL" : row[0]) ) ;
}
//釋放結果集
mysql_free_result(result);
//關閉資料庫連接
mysql_close(handle);
system("PAUSE");
//為了兼容大部分的編譯器加入此行
return 0;
}

⑻ 如何在C/C++程序中使用資料庫

一般要看使用的資料庫。如果 操作 sql server 需要用到 ADO 驅動,這種驅動使用MFC做的包裝類比較多一些,在控制台直接編寫代碼可能稍顯繁瑣。

如果操作mysql,在安裝mysql的時候,有相應的include頭文件和庫文件,可以在自己的IDE開發環境中進行設置。

熱點內容
sql表的操作 發布:2024-11-19 06:36:27 瀏覽:138
安卓手機用什麼模擬器 發布:2024-11-19 06:36:27 瀏覽:859
es文件夾就 發布:2024-11-19 06:27:13 瀏覽:541
鴻蒙系統對比安卓哪個強大 發布:2024-11-19 06:22:22 瀏覽:178
fifo訪問 發布:2024-11-19 06:07:51 瀏覽:512
hdfs上傳本地文件 發布:2024-11-19 06:06:31 瀏覽:512
c語言default的意思 發布:2024-11-19 06:00:47 瀏覽:24
怎樣學習java 發布:2024-11-19 06:00:45 瀏覽:359
壓縮ini 發布:2024-11-19 05:53:31 瀏覽:645
emc存儲圖標 發布:2024-11-19 05:39:03 瀏覽:647