我正在将我的项目从public class DatabaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "contacts.db";
private static final String TABLE_NAME = "contacts";
private static final String COLUMN_ID = "id";
private static final String COLUMN_FORENAME = "name";
private static final String COLUMN_SURNAME = "Surname";
private static final String COLUMN_UNAME = "uname";
private static final String COLUMN_PASS = "pass";
private static final String COLUMN_DOB = "D.O.B";
private static final String COLUMN_CONTACTNO = "contact_number";
SQLiteDatabase db;
private static final String TABLE_CREATE ="create table contacts (id integer primary key , forename text ," +
" surname text , uname text , pass text , D.O.B integer ,contact_number integer )";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABLE_CREATE);
this.db = db;
}
public void insertContact(Contact c) {
db = this.getWritableDatabase();
ContentValues values = new ContentValues();
String query = "Select * from contacts";
Cursor cursor = db.rawQuery(query, null);
int count = cursor.getCount();
values.put(COLUMN_ID, count);
values.put(COLUMN_FORENAME, c.getForename());
values.put(COLUMN_SURNAME, c.getSurname());
values.put(COLUMN_UNAME, c.getUname());
values.put(COLUMN_PASS, c.getPass());
values.put(COLUMN_DOB, c.getDOB());
values.put(COLUMN_CONTACTNO, c.getContactNo());
db.insert(TABLE_NAME, null, values);
db.close();
}
public String searchPass(String uname) {
db = this.getReadableDatabase();
String query = "Select uname,pass from "+TABLE_NAME;
Cursor cursor = db.rawQuery(query, null);
String a, b;
b = "not found";
if(cursor.moveToFirst()){
do{
a = cursor.getString(0);
if(a.equals(uname)){
b = cursor.getString(1);
break;
}
}
while(cursor.moveToNext());
}
return b;
}
public boolean updateData(String uname, String pass, String contactNo ){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COLUMN_UNAME, uname);
contentValues.put(COLUMN_PASS, pass);
contentValues.put(COLUMN_CONTACTNO, contactNo);
db.update(TABLE_NAME, contentValues, "uname = ?", new String[] { uname });
return true;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String query = "Drop table IF EXISTS "+TABLE_NAME;
db.execSQL(query);
this.onCreate(db);
}
}
移动到PHP
,我正在寻找从Golang
{{到sub project
main.go
调用/调用/处理控制的有效方式1}},我想从
src
我是main.go
的新手我不知道如何以最佳方式做到这一点,我的项目结构是
http://localhost/ => http://localhost/sub-project1/
http://localhost/ => http://localhost/sub-project2/
http://localhost/ => http://localhost/sub-projectn/
我正在使用Golang
进行路由,位于src/
main.go
sub-project1/
main.go
sub-project2/
main.go
sub-projectn/
main.go
gitHub.com/
......
golang.org/
......
下的httprouter
包含以下
main.go
并且所有文件都必须从src
package main
import ....
// homePageHandler
// contactPageHandler
// aboutPageHandler
// loginPageHandler
// signupPageHandler
func main() {
router := httprouter.New()
router.GET("/", homePageHandler)
router.GET("/contact", contactPageHandler)
router.GET("/about", aboutPageHandler)
router.GET("/login", loginPageHandler)
router.GET("/signup", signupPageHandler)
// here I want to pass control to my sub project main.go
// and I don't want to write any /sub-project routing urls here,
// because each /sub-project's contain many urls
router.GET("/sub-project1", ??????)
router.GET("/sub-project2", ??????)
router.GET("/sub-project3", ??????)
router.GET("/sub-projectn", ??????)
}
传递,因为整个项目只有一个src
并且在任何main.go
main()
里面我想要这样做< / p>
/sub-projectx
答案 0 :(得分:3)
Golang 源代码没有通过解释器运行,而是内置到二进制文件中,在动态项目的情况下灵活性较低。也就是说,我保持我的项目彼此孤立,并让 Nginx (例如)处理多个项目分组。当然,这需要一些重构,比如创建共享包等等。
或者不是
如果由于某种原因,您仍然认为通过单个二进制文件运行多个项目是可以的,那么这是您的选择。在这种情况下,您可能会查看某些框架中可用的路径分组。这是what Go Gin provides:
func main() {
router := gin.Default()
// Simple group: v1
v1 := router.Group("/v1")
{
v1.POST("/login", loginEndpoint)
v1.POST("/submit", submitEndpoint)
v1.POST("/read", readEndpoint)
}
// Simple group: v2
v2 := router.Group("/v2")
{
v2.POST("/login", loginEndpoint)
v2.POST("/submit", submitEndpoint)
v2.POST("/read", readEndpoint)
}
router.Run(":8080")
}