c資料庫增刪改查
『壹』 如何在C#窗體程序中連接資料庫並實現增、刪、改、查啊我不會連接資料庫,也不會在裡面寫代碼實現增刪改查
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Data.sqlClient;
using System.Configuration;
using System.Data.Common;
using System.Collections.Generic;
namespace CeptAuto.DBUtility
{
/// <summary>
/// 數據訪問抽象基礎類
/// Copyright (C) 2004-2008 By LiTianPing
/// </summary>
public abstract class DbHelperSQL
{
//資料庫連接字元串(web.config來配置),可以動態更改connectionString支持多資料庫.
public static string connectionString = PubConstant.ConnectionString;
public DbHelperSQL()
{
}
#region 公用方法
/// <summary>
/// 判斷是否存在某表的某個欄位
/// </summary>
/// <param name="tableName">表名稱</param>
/// <param name="columnName">列名稱</param>
/// <returns>是否存在</returns>
public static bool ColumnExists(string tableName, string columnName)
{
string sql = "select count(1) from syscolumns where [id]=object_id('" + tableName + "') and [name]='" + columnName + "'";
object res = GetSingle(sql);
if (res == null)
{
return false;
}
return Convert.ToInt32(res) > 0;
}
public static int GetMaxID(string FieldName, string TableName)
{
string strsql = "select max(" + FieldName + ")+1 from " + TableName;
object obj = GetSingle(strsql);
if (obj == null)
{
return 1;
}
else
{
return int.Parse(obj.ToString());
}
}
public static bool Exists(string strSql)
{
object obj = GetSingle(strSql);
int cmdresult;
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
cmdresult = 0;
}
else
{
cmdresult = int.Parse(obj.ToString());
}
if (cmdresult == 0)
{
return false;
}
else
{
return true;
}
}
/// <summary>
/// 表是否存在
/// </summary>
/// <param name="TableName"></param>
/// <returns></returns>
public static bool TabExists(string TableName)
{
string strsql = "select count(*) from sysobjects where id = object_id(N'[" + TableName + "]') and OBJECTPROPERTY(id, N'IsUserTable') = 1";
//string strsql = "SELECT count(*) FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[" + TableName + "]') AND type in (N'U')";
object obj = GetSingle(strsql);
int cmdresult;
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
cmdresult = 0;
}
else
{
cmdresult = int.Parse(obj.ToString());
}
if (cmdresult == 0)
{
return false;
}
else
{
return true;
}
}
public static bool Exists(string strSql, params SqlParameter[] cmdParms)
{
object obj = GetSingle(strSql, cmdParms);
int cmdresult;
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
cmdresult = 0;
}
else
{
cmdresult = int.Parse(obj.ToString());
}
if (cmdresult == 0)
{
return false;
}
else
{
return true;
}
}
#endregion
#region 執行簡單SQL語句
/// <summary>
/// 執行SQL語句,返回影響的記錄數
/// </summary>
/// <param name="SQLString">SQL語句</param>
/// <returns>影響的記錄數</returns>
public static int ExecuteSql(string SQLString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
{
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
connection.Close();
throw e;
}
}
}
}
public static int ExecuteSqlByTime(string SQLString, int Times)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
{
try
{
connection.Open();
cmd.CommandTimeout = Times;
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
connection.Close();
throw e;
}
}
}
}
/// <summary>
/// 執行多條SQL語句,實現資料庫事務。
/// </summary>
/// <param name="SQLStringList">多條SQL語句</param>
public static int ExecuteSqlTran(List<String> SQLStringList)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
SqlTransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
try
{
int count = 0;
for (int n = 0; n < SQLStringList.Count; n++)
{
string strsql = SQLStringList[n];
if (strsql.Trim().Length > 1)
{
cmd.CommandText = strsql;
count += cmd.ExecuteNonQuery();
}
}
tx.Commit();
return count;
}
catch
{
tx.Rollback();
return 0;
}
}
}
/// <summary>
/// 執行帶一個存儲過程參數的的SQL語句。
/// </summary>
/// <param name="SQLString">SQL語句</param>
/// <param name="content">參數內容,比如一個欄位是格式復雜的文章,有特殊符號,可以通過這個方式添加</param>
/// <returns>影響的記錄數</returns>
public static int ExecuteSql(string SQLString, string content)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand(SQLString, connection);
System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);
myParameter.Value = content;
cmd.Parameters.Add(myParameter);
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
throw e;
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
/// <summary>
/// 執行帶一個存儲過程參數的的SQL語句。
/// </summary>
/// <param name="SQLString">SQL語句</param>
/// <param name="content">參數內容,比如一個欄位是格式復雜的文章,有特殊符號,可以通過這個方式添加</param>
/// <returns>影響的記錄數</returns>
public static object ExecuteSqlGet(string SQLString, string content)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand(SQLString, connection);
System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);
myParameter.Value = content;
cmd.Parameters.Add(myParameter);
try
{
connection.Open();
object obj = cmd.ExecuteScalar();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch (System.Data.SqlClient.SqlException e)
{
throw e;
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
/// <summary>
/// 向資料庫里插入圖像格式的欄位(和上面情況類似的另一種實例)
/// </summary>
/// <param name="strSQL">SQL語句</param>
/// <param name="fs">圖像位元組,資料庫的欄位類型為image的情況</param>
/// <returns>影響的記錄數</returns>
public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand(strSQL, connection);
System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image);
myParameter.Value = fs;
cmd.Parameters.Add(myParameter);
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
throw e;
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
/// <summary>
/// 執行一條計算查詢結果語句,返回查詢結果(object)。
/// </summary>
/// <param name="SQLString">計算查詢結果語句</param>
/// <returns>查詢結果(object)</returns>
public static object GetSingle(string SQLString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
{
try
{
connection.Open();
object obj = cmd.ExecuteScalar();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch (System.Data.SqlClient.SqlException e)
{
connection.Close();
throw e;
}
}
}
}
public static object GetSingle(string SQLString, int Times)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
{
try
{
connection.Open();
cmd.CommandTimeout = Times;
object obj = cmd.ExecuteScalar();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch (System.Data.SqlClient.SqlException e)
{
connection.Close();
throw e;
}
}
}
}
/// <summary>
/// 執行查詢語句,返回SqlDataReader ( 注意:調用該方法後,一定要對SqlDataReader進行Close )
/// </summary>
/// <param name="strSQL">查詢語句</param>
/// <returns>SqlDataReader</returns>
public static SqlDataReader ExecuteReader(string strSQL)
{
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(strSQL, connection);
try
{
connection.Open();
SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return myReader;
}
catch (System.Data.SqlClient.SqlException e)
{
throw e;
}
}
/// <summary>
/// 執行查詢語句,返回DataSet
『貳』 c語言中資料庫的增刪改查與鏈表的增刪改查有什麼區別
資料庫使用來存貯大數據的,鏈表是一種數據結構二者不是同一個概念,如果你想關閉之後數據能夠保存的話請使用資料庫或者文件,否則的話就用鏈表吧
『叄』 誰知道用c語言向資料庫做增刪改查嗎
我曾經寫過C語言的資料庫系統..
給你部分代碼(一個銷售函數)以作參考...
void
book_out()
//銷售函數
{
char
temp;
EXEC
SQL
BEGIN
DECLARE
SECTION;
/*主變數定義開始.*/
int
Hout_shuliang;
int
Hshuliang;///////////
char
Hbook_id[11];
EXEC
SQL
END
DECLARE
SECTION;
/*主變數定義結束*/
lab3:
printf("請輸入圖書編號:");
scanf("%s",&Hbook_id);
printf("請輸入賣出本數:");
scanf("%d",&Hout_shuliang);
//先將庫存量取出到主變數
EXEC
SQL
select
book_shuliang
into
:Hshuliang
from
book_kucun
where
book_id=:Hbook_id;
if(Hshuliang<Hout_shuliang)
//假如庫存不足,銷售不成功.
{
printf("輸入有誤.沒那麼多庫存,請重新輸入.\n");
goto
lab3;
}
//將銷售記錄插入到book_out(銷售表)數據表.
EXEC
SQL
insert
into
book_out
values(:Hbook_id,:Hout_shuliang,GETDATE());
EXEC
SQL
COMMIT
TRANSACTION;
/*事務提交*/
printf("售出成功,輸入Y繼續輸入其他要售出的書.其他鍵返回主菜單:");
getchar();//////////////////////////
scanf("%c",&temp);
if(temp=='y'||temp=='Y')
goto
lab3;
}
『肆』 C# C/S架構,如何讓多台計算機訪問一台計算機上的資料庫並可以對其進行增刪改查的操作
一般來說呢,會搞個域名,IP可能會變(路由器重啟就變,換伺服器也會變),先根據域名解析出放資料庫伺服器的IP地址,然後將連接資料庫的字元串的IP設置成這個IP地址。其他的跟區域網一樣。如果你確定你放資料庫伺服器的IP地址不會變就不用搞域名了。
現在有提供雲服務的商家,可以租用資料庫,直接給個IP和埠,跟區域網一樣。
『伍』 用c語言實現對學生信息增刪改,怎麼做啊
要更詳細答案,聯系我,這個很難做的,起碼要給點懸賞分作為酬勞啊!!!
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
//數據結構的定義
typedef struct node{
int id; //學號
char name[10]; // 姓名
int grade; //成績
struct node * next; //指向下一節點的指針
}node,*list;
//函數的聲明,必須按照聲明來定義函數
void showMenu(); //顯示菜單
void start(); // 主控程序
void init(list &h);// 初始化鏈表h
void printAnRecord(node * p);//輸出p所指節點的值(id,name,grade)
void printList(list h);// 輸出鏈表h的各節點的值
int del(list h,int n);//刪除鏈表h中id為n的節點,成功刪除返回1,若不存在則返回0
int insert(list h,int id,char * name,int grade);//在鏈表h中,插入節點(n,name,grade),若id重復返回0,否則返回1
node * searchByID(list h, int n);// 在鏈表h中查找id為n的節點,查找成功返回其指針,否則返回NULL
int update(list h,int n,int grade);// 將鏈表h中id為n的節點的成績改為grade,若不存在該節點返回0,否則返回1
float average(list h); //返回鏈表h中各個節點成績的平均值
int bulkInsert(list h);//在鏈表h中批量插入節點,以id=0結束,返回成功插入的節點數
void clearList(list h);//清空鏈表h(使其成為空鏈表)
void showMenu()
{ //顯示菜單
puts(" 0----Bulk Insert ");
puts(" 1----Insert an Record");
puts(" 2----Delete an Record");
puts(" 3----Update an Record's grade");
puts(" 4--- Search an Record by stu_id");
puts(" 5----Print all Record");
puts(" 6----Average of grade");
puts(" 7----Clear list");
puts(" 9----Exit");
}
//主控程序
void start()
{
list h; //鏈表
int choice; //功能選擇
int id,grade,flag=1,m;
char name[10];
showMenu();
init(h); //初始化鏈表h,即建立空鏈表
while(flag){//若未退出程序
puts(" ******** Please input 1...9 ********* ");
scanf("%d",&choice);
switch(choice){ //根據選擇的功能號,執行不同的操作
case 0 :
puts("input Stu_ID, Name , Grade (end by 0)");
m=bulkInsert(h);
printf(" %d Record insert successfully\n",m);
break;
case 1:
puts("input Stu_ID, Name , Grade: ");
scanf("%d",&id);
scanf("%s",name);
scanf("%d",&grade);
if( insert(h,id,name,grade) )
puts("Insert an Record successfully!");
else
puts("Sorry, blicate ID ");
break;
case 2:
puts("input Stu_ID to delet");
scanf("%d",&id);
if( del(h,id) )
puts("Delete an Record successfully");
else
puts("Sorry, ID no exit ");
break;
case 3:
puts("input Stu_ID and grade to update");
scanf("%d",&id);
scanf("%d",&grade);
if ( update(h,id,grade) )
puts("Update an Record successfully ");
else
puts("Sorry, ID no exit ");
break;
case 4:
puts("input Stu_ID to search");
scanf("%d",&id);
node *p;
if( p=searchByID(h,id) )
printAnRecord(p);
else
puts("Sorry, ID no exit ");
break;
case 5:
printList(h);
break;
case 6:
printf("The average grade is %6.2f \n ", average(h) );
break;
case 7:
clearList(h);
break;
case 9:
flag=0; //退出循環
break;
default:
puts(" Error ! Must Input (1...9) ");
}
}
}
void main()
{
//編程時要一個一個函數的調試完成後,最後再調用主控程序
start();
}
『陸』 資料庫管理系統能對資料庫中的數據進行查詢、插入、修改和刪除等操作,這種功能稱為________。
資料庫管理系統能對資料庫中的數據進行查詢、插入、修改和刪除等操作,這種功能稱為資料庫的操縱功能。
數據定義功能:提供相應數據語言來定義資料庫結構,它們刻畫資料庫框架,並被保存在數據字典中。數據操縱功能:實現對資料庫數據的基本存取操作(檢索、插入、修改和刪除)。數據控制功能:數據的安全性、完整性和並發控制等對資料庫運行進行有效地控制和管理,以確保數據正確有效。
(6)c資料庫增刪改查擴展閱讀:
按功能劃分,資料庫管理系統大致可分為6個部分:
模式翻譯:提供數據定義語言(ddl)。用它書寫的資料庫模式被翻譯為內部表示。資料庫的邏輯結構、完整性約束和物理儲存結構保存在內部的數據字典中。資料庫的各種數據操作(如查找、修改、插入和刪除等)和資料庫的維護管理都是以資料庫模式為依據的。
應用程序的編譯:把包含著訪問資料庫語句的應用程序,編譯成在dbms支持下可運行的目標程序。
互動式查詢:提供易使用的互動式查詢語言,如SQL.DBMS負責執行查詢命令,並將查詢結果顯示在屏幕上。
數據的組織與存取:提供數據在外圍儲存設備上的物理組織與存取方法。
事務運行管理:提供事務運行管理及運行日誌,事務運行的安全性監控和數據完整性檢查,事務的並發控制及系統恢復等功能。
資料庫的維護:為資料庫管理員提供軟體支持,包括數據安全控制、完整性保障、資料庫備份、資料庫重組以及性能監控等維護工具。
資料庫管理系統的技術特點:
採用復雜的數據模型表示數據結構,數據冗餘小,易擴充,實現了數據共享。
具有較高的數據和程序獨立性,資料庫的獨立性有物理獨立性和邏輯獨立性。
資料庫系統為用戶提供了方便的用戶介面。
資料庫系統提供4個方面的數據控制功能,分別是並發控制、恢復、完整性和安全性。資料庫中各個應用程序所使用的數據由資料庫系統統一規定,按照一定的數據模型組織和建立,由系統統一管理和集中控制。
增加了系統的靈活性。
參考資料來源:網路-資料庫管理系統
『柒』 C語言一維數組的增,刪,改,查的編程例子,要簡單點的!會的教一下
有譚浩強那本書么?
看一下數組部分就好了。
數組定義好了,是不能增刪的。只能對數組元素賦值,查找之類的操作。定義數組就簡單了:
類型說明
數組名
【元素個數】
其中元素個數不能是變數,只能是常量。例如定義一個五個元素的整形arr數組
int
arr【5】。給數組賦值:arr【x】=數值。
其中x只能是0-5,數組第一個元素為0,而不是1。查找你就要首先學會那幾個查找的演算法。就懂了。
『捌』 求教三層架構實現登錄並操縱資料庫增刪改查我是學C
所謂的三層架構就是將展示層、控制層和模型層層分開,通過介面的方式實現三層之間的解偶。展示層完成的試將業務信息展示給用戶並將業務數據從用戶收集,完成必要的合法性校驗後通過介面傳遞給控制層;
控制層呢則是根據業務數據完成嚴格的數據校驗,組裝必要的業務數據,將不同的業務請求提交不同的業務處理模塊(也就是模型層)完成業務處里,然後將模型層的返回數據轉換為展示層需要的數據,進行展示;
模型層就是進行業務處里的單元,完成各種業務邏輯的處理、資料庫的訪問等等;其實這一層可更細分為業務處里層和數據訪問層,也就是DAO層
明白了這些內容,你就應該明白你的需要了:
1、展示層:
(1)登錄頁面,請用戶輸入用戶明和密碼,必要時生成驗證碼(剛學,可以先不實現這個),簡單驗證後(比如數據長度等等)提交後將數據轉給控制層的登錄處理模塊;
(2)登錄成功頁面:用戶登錄成功展示的頁面(這是你的業務需要)
(3)登錄失敗頁面:密碼驗證失敗後的展示頁面,可以轉到登錄頁面並提示失敗,或者另建立新頁面;
2、控制層:
這里控制層只有一個處理模塊:登錄驗證。將展示層提交的數據進行業務邏輯驗證,比如:登錄名是什麼結構、不能包含什麼數據;密碼多長、需要什麼數據、不能包含什麼數據等等,都是你的業務規定;如果不成功直接返回展示層提示存在問題;通過後調用模型層的登錄處理模塊,進行業務處里;如果模型層處理成功,根據需要轉到成功頁面或者失敗頁面(展示層);必要時准備會話信息參數,以備後用;
3、模型層:
根據用戶登錄名叢書據庫中讀取用戶信息,檢驗密碼是不是正確(必要時後有密碼加密處理);用戶狀態是否正確,是否允許登錄等等信息校驗後將結果返回就可以了