windows下操作資料庫的方法有ODBC和ADO兩種
源碼不是一句兩句的問題
相關的例子網上搜搜多的是
❷ C# 如何向ACCESS資料庫添加記錄(實際情況)
String sql = "insert into 表名(欄位1,欄位2) values( '" + 欄位1對應的值+ "' , '" + 欄位2對應的值 + "')";
String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\data.mdb";
OleDbConnection connection = new OleDbConnection(connectionString);
OleDbCommand cmd = new OleDbCommand(sql,connection);
connection.Open();
if (cmd.ExecuteNonQuery() > 0)//判斷插入數據是否成功 { //執行要操作的語句 }
❸ c#通過for循環多次向資料庫中插入數據。
你的問題不甚清晰。需要插入的數據來源是在窗體中嗎?SQL需要拼接嗎?
給你一段代碼參考,這段代碼是將窗體中dataGridView中的數據循環插入資料庫,循環過程中拼接SQL,並執行插入:
//主方法,拼接SQL並執行插入
privateintInsertInTo()
{
StringBuildersqlinsert=newStringBuilder();
StringBuildersqlvalue=newStringBuilder();
sqlinsert.Append("insertinto你的表名(");
sqlvalue.Append("values(");
intnum=0;//該變數用來獲取插入多少條數據
for(inti=0;i<dataGridView1.Rows.Count;i++)
{
for(intc=0;c<dataGridView1.Columns.Count;c++)
{
sqlinsert.Append(dataGridView1.Columns[c].HeaderText+",");//賦值列名
sqlvalue.Append("'"+dataGridView1.Rows[i].Cells[c].Value.ToString()+"'");//賦值列對應的值
}
stringsql=sqlinsert.ToString().Substring(0,sqlinsert.Length-1)+")"+sqlvalue.ToString().Substring(0,sqlvalue.Length-1)+")";//拼接完整插入SQL
num+=Insert(sql);//調用插入方法,並接收返回的插入行數
}
returnnum;
}
//連接資料庫並執行SQL
privateintInsert(stringsql)
{
stringconnstring="server=127.0.0.1\SQLEXPRESS;database=你的資料庫名;uid=用戶名;pwd=密碼";
SqlConnectionconn=newSqlConnection(connstring);
SqlCommandcmd=newSqlCommand(sql,conn);
conn.Open();
intn=cmd.ExecuteNonQuery();//執行
conn.Close();
cmd.Dispose();
returnn;
}
賦值列名時可以放在循環外只賦值一次。
❹ 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#向資料庫中增加數據
首先在tbl_Employee_Info values之間顯式加入列名,然後才能進行後續判斷。
❻ 怎樣用c語言給mysql資料庫插數據
mysql是有c語言介面的,安裝相應庫後就可以鏈接了,一般連接mysql的函數是mysql_connect或者mysql_real_connect(大概就是這么拼的吧。。。)可以使用mysql_query執行sql語句
❼ c#向資料庫添加數據
SqlConnection conn = new SqlConnection("server=.;database=stu;uid=sa;pwd=;");
conn.Open();
SqlCommand cmd=new SqlCommand();
cmd.CommandText="insert into student values('"+this.txt1.Text+"','"+this.txt2.Text+"'";
cmd.Connection=conn;
cmd.ExecuteNonQuery();
//下面是查詢數據用的
SqlDataAdapter sda = new SqlDataAdapter("select *from student", conn);
DataSet ds=new DataSet();
sda.Fill(ds,"student");
conn.Close();
❽ MySQL C API怎麼實現資料庫表的插入數據
MYSQL_OPT_READ_TIMEOUT 是 MySQL c api 客戶端中用來設置讀取超時時間的參數。在 MySQL 的官方文檔中,該參數的描述是這樣的:
MYSQL_OPT_READ_TIMEOUT (argument type: unsigned int *)The timeout in seconds for each attempt to read from the server. There are retries if necessary, so the total effective timeout value is three times the option value. You can set the value so that a lost connection can be detected earlier than the TCP/IPClose_Wait_Timeout value of 10 minutes.
也就是說在需要的時候,實際的超時時間會是設定值的 3 倍。但是實際測試後發現實際的超時時間和設置的超時時間一致。
而具體什麼時候發生三倍超時,在文檔中沒有找到。所以對 MySQL 5.7.20 的源碼進行了一些分析。
使用 GDB 調試代碼找了實際與 mysql server 通信的代碼,如下:
其中 vio_read() 函數中,使用 recv 和 poll 來讀取報文和做讀取超時。net_should_retry() 函數只有在發生 EINTR 時才會返回 true。從這段代碼來看是符合測試結果的,並沒有對讀取進行三次重試。只有在讀取操作被系統中斷打斷時才會重試,但是這個重試並沒有次數限制。
從上面代碼的分析可以看出,代碼的邏輯和文檔的描述不符。於是在一頓搜索後,找到了一個 MySQL 的 BUG(Bug #31163)。該 BUG 報告了在MySQL5.0 中,MySQL c api 讀取的實際超時時間是設置的三倍,與現有文檔描述相符。於是對 MySQL 5.0.96 的代碼又進行分析。
同樣使用 GDB 找到了通信部分的代碼。這次找到了重試三次的代碼,如下:
這個版本的 MySQL api 的讀寫超時是直接使用的 setsockopt 設置的。第一次循環,在 A 點發生了第一次超時(雖然注釋寫的非阻塞,但是客戶端的連接始終是阻塞模式的)。然後在 B 點將該 socket 設置為阻塞模式,C 點這里重置 retry 次數。由於設置了 alarm 第二次以後的循環會直接進入 D 點的這個分支,並且判斷循環次數。作為客戶端時net->retry_count 始終是 1,所以重試了兩次,共計進行了 3 次 vioread 後從 E 點退出函數。
由上面的分析可知,MySQL 文檔對於該參數的描述已經過時,現在的 MYSQL_OPT_READ_TIMEOUT 並不會出現三倍超時的問題。而 Bug #31163 中的處理結果也是將文檔中該參數的描述更新為實際讀取超時時間是設定時間的三倍。也許是 MySQL 的維護者們在後續版本更新時忘記更新文檔吧。
❾ C語言如何將變數插入Mysql資料庫
你資料庫用的是什麼引擎?事務有沒有提交?
1、在執行語句的下一句設置斷點或添加超時50s,查看執行過程中有沒有報錯,並且看insert語句執行後當時資料庫里有沒有記錄。
2、超時時間過後流程走完,在看看資料庫里是否有數據;